午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 再也不用花錢買漫畫!Python爬取某漫畫的腳本及源碼

再也不用花錢買漫畫!Python爬取某漫畫的腳本及源碼

熱門標簽:孝感營銷電話機器人效果怎么樣 聊城語音外呼系統 海外網吧地圖標注注冊 南陽打電話機器人 ai電銷機器人的優勢 打電話機器人營銷 地圖標注自己和別人標注區別 商家地圖標注海報 騰訊地圖標注沒法顯示

一、工具

  • python3
  • 第三方類庫requests
  • python3-pyqt5(GUI依賴,不用GUI可不裝)

ubuntu系列系統使用以下命令安裝依賴:

URL格式: 漫畫首頁的URL,如http://m.ac.qq.com/Comic/view/id/518333(移動版) 或 http://ac.qq.com/Comic/comicInfo/id/17114, http://ac.qq.com/naruto(PC版)

注意: 火影忍者彩漫需要訪問m.ac.qq.com搜索火影忍者,因為PC端頁面火影忍者彩漫和黑白漫畫是一個id一個url。

二、命令行幫助

usage: getComic.py [-h] [-u URL] [-p PATH] [-d] [-l LIST]
 
*下載騰訊漫畫,僅供學習交流,請勿用于非法用途*
空參運行進入交互式模式運行。
 
optional arguments:
  -h, --help            show this help message and exit
  -u URL, --url URL     要下載的漫畫的首頁,可以下載以下類型的url: 
                        http://ac.qq.com/Comic/comicInfo/id/511915
                        http://m.ac.qq.com/Comic/comicInfo/id/505430
                        http://pad.ac.qq.com/Comic/comicInfo/id/505430
                        http://ac.qq.com/naruto
  -p PATH, --path PATH  漫畫下載路徑。 默認: /home/fengyu/tencent_comic
  -d, --dir             將所有圖片下載到一個目錄(適合騰訊漫畫等軟件連看使用)
  -l LIST, --list LIST  要下載的漫畫章節列表,不指定則下載所有章節。格式范例: 
                        N - 下載具體某一章節,如-l 1, 下載第1章
                        N,N... - 下載某幾個不連續的章節,如 "-l 1,3,5", 下載1,3,5章
                        N-N... - 下載某一段連續的章節,如 "-l 10-50", 下載[10,50]章
                        雜合型 - 結合上面所有的規則,如 "-l 1,3,5-7,11-111"

三、GUI預覽效果

支持不連續的章節選擇下載

windows預覽效果:

deepin/Linux 預覽效果:

四、全部源碼

import requests
import re
import json
import os
import argparse
 
requestSession = requests.session()
UA = 'Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X; en-us) \

        AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 \

        Mobile/9B176 Safari/7534.48.3' # ipad UA
requestSession.headers.update({'User-Agent': UA})
 
class ErrorCode(Exception):
    '''自定義錯誤碼:
        1: URL不正確
        2: URL無法跳轉為移動端URL
        3: 中斷下載'''
    def __init__(self, code):
        self.code = code
 
    def __str__(self):
        return repr(self.code)
 
def isLegelUrl(url):
    legal_url_list = [
        re.compile(r'^http://ac.qq.com/Comic/[Cc]omicInfo/id/\d+/?$'),
        re.compile(r'^http://m.ac.qq.com/Comic/[Cc]omicInfo/id/\d+/?$'),
        re.compile(r'^http://ac.qq.com/\w+/?$'),
        re.compile(r'^http://pad.ac.qq.com/Comic/[Cc]omicInfo/id/\d+/?$')
    ]
 
    for legal_url in legal_url_list:
        if legal_url.match(url):
            return True
    return False
 
def getId(url):
    if not isLegelUrl(url):
        print('請輸入正確的url!具體支持的url請在命令行輸入-h|--help參數查看幫助文檔。')
        raise ErrorCode(1)
 
    numRE = re.compile(r'\d+$')
    
    id = numRE.findall(url)
    if not id:
        get_id_request = requestSession.get(url)
        url = get_id_request.url
        id = numRE.findall(url)
        if not isLegelUrl(url) or not id:
            print('無法自動跳轉移動端URL,請進入http://m.ac.qq.com,找到'
            '該漫畫地址。\n'
            '地址應該像這樣: '
            'http://m.ac.qq.com/Comic/comicInfo/id/xxxxx (xxxxx為整數)')
            raise ErrorCode(2)
 
    return id[0]
 
def getContent(id):
    getComicInfoUrl = 'http://pad.ac.qq.com/GetData/getComicInfo?id={}'.format(id)
    requestSession.headers.update({'Cookie': 'ac_refer=http://pad.ac.qq.com'})
    requestSession.headers.update({'Referer': 'http://pad.ac.qq.com'})
    getComicInfo = requestSession.get(getComicInfoUrl)
    comicInfoJson = getComicInfo.text
    comicInfo = json.loads(comicInfoJson)
    comicName = comicInfo['title']
    comicIntrd = comicInfo['brief_intrd']
    getChapterListUrl = 'http://pad.ac.qq.com/GetData/getChapterList?id={}'.format(id)
    getChapterList = requestSession.get(getChapterListUrl)
    contentJson = json.loads(getChapterList.text)
    count = contentJson['length']
    sortedContentList = []
    for i in range(count + 1):
        for item in contentJson:
            if isinstance(contentJson[item], dict) and contentJson[item].get('seq') == i:
                sortedContentList.append({item: contentJson[item]})
                break
    return (comicName, comicIntrd, count, sortedContentList)
 
def getImgList(contentJson, id):
    cid = list(contentJson.keys())[0]
    getPicHashURL = 'http://pad.ac.qq.com/View/mGetPicHash?id={}cid={}'.format(id, cid)
    picJsonPage = requestSession.get(getPicHashURL).text
    picJson = json.loads(picJsonPage)
    count = picJson['pCount']    #統計圖片數量
    pHash = picJson['pHash']
    sortedImgDictList = []
    for i in range(1, count + 1):
        for item in pHash:
            if pHash[item]['seq'] == i:
                sortedImgDictList.append(pHash[item])
                break
    imgList = []
    for imgDict in sortedImgDictList:
        k = imgDict['cid']
        m = imgDict['pid']
        j = int(id)
        uin = max(j + k + m, 10001)
        l = [j % 1000 // 100, j % 100, j, k]
        n = '/mif800/' + '/'.join(str(j) for j in l) + '/'
        h = str(m) + '.mif2'
        g="http://ac.tc.qq.com/store_file_download?buid=15017uin="+str(uin)+"dir_path="+n+"name="+h
        imgList.append(g)
    return imgList
 
def downloadImg(imgUrlList, contentPath, one_folder=False):
    count = len(imgUrlList)
    print('該集漫畫共計{}張圖片'.format(count))
    i = 1
 
    for imgUrl in imgUrlList:
        print('\r正在下載第{}張圖片...'.format(i), end = '')
        if not one_folder:
            imgPath = os.path.join(contentPath, '{0:0>3}.jpg'.format(i))
        else:
            imgPath = contentPath + '{0:0>3}.jpg'.format(i)
        i += 1
        
        #目標文件存在就跳過下載
        if os.path.isfile(imgPath):
            continue
 
        try:
            downloadRequest = requestSession.get(imgUrl, stream=True)
            with open(imgPath, 'wb') as f:
                for chunk in downloadRequest.iter_content(chunk_size=1024): 
                    if chunk: # filter out keep-alive new chunks
                        f.write(chunk)
                        f.flush()
        except (KeyboardInterrupt, SystemExit):
            print('\n\n中斷下載,刪除未下載完的文件!')
            if os.path.isfile(imgPath):
                os.remove(imgPath)
            raise ErrorCode(3)
 
    print('完畢!\n')
 
def parseLIST(lst):
    '''解析命令行中的-l|--list參數,返回解析后的章節列表'''
    legalListRE = re.compile(r'^\d+([,-]\d+)*$')
    if not legalListRE.match(lst):
        raise LISTFormatError(lst + ' 不匹配正則: ' + r'^\d+([,-]\d+)*$')
 
    #先逗號分割字符串,分割后的字符串再用短橫杠分割
    parsedLIST = []
    sublist = lst.split(',')
    numRE = re.compile(r'^\d+$')
 
    for sub in sublist:
        if numRE.match(sub):
            if int(sub) > 0: #自動忽略掉數字0
                parsedLIST.append(int(sub))
            else:
                print('警告: 參數中包括不存在的章節0,自動忽略')
        else:
            splitnum = list(map(int, sub.split('-')))
            maxnum = max(splitnum)
            minnum = min(splitnum)       #min-max或max-min都支持
            if minnum == 0:
                minnum = 1               #忽略數字0
                print('警告: 參數中包括不存在的章節0,自動忽略')
            parsedLIST.extend(range(minnum, maxnum+1))
 
    parsedLIST = sorted(set(parsedLIST)) #按照從小到大的順序排序并去重
    return parsedLIST
 
def main(url, path, lst=None, one_folder=False):
    '''url: 要爬取的漫畫首頁。 path: 漫畫下載路徑。 lst: 要下載的章節列表(-l|--list后面的參數)'''
    try:
        if not os.path.isdir(path):
           os.makedirs(path)
        id = getId(url)
        comicName,comicIntrd,count,contentList = getContent(id)
        contentNameList = []
        for item in contentList:
            for k in item:
                contentNameList.append(item[k]['t'])
        print('漫畫名: {}'.format(comicName))
        print('簡介: {}'.format(comicIntrd))
        print('章節數: {}'.format(count))
        print('章節列表:')
        try:
            print('\n'.join(contentNameList))
        except Exception:
            print('章節列表包含無法解析的特殊字符\n')
            
        forbiddenRE = re.compile(r'[\\/":*?>|]') #windows下文件名非法字符\ / : * ? "  > |
        comicName = re.sub(forbiddenRE, '_', comicName) #將windows下的非法字符一律替換為_
        comicPath = os.path.join(path, comicName)
        if not os.path.isdir(comicPath):
            os.makedirs(comicPath)
        print()
        
        if not lst:
            contentRange = range(1, len(contentList) + 1)
        else:
            contentRange = parseLIST(lst)
 
        for i in contentRange:
            if i > len(contentList):
                print('警告: 章節總數 {} ,'
                        '參數中包含過大數值,'
                        '自動忽略'.format(len(contentList)))
                break
 
            contentNameList[i - 1] = re.sub(forbiddenRE, '_', contentNameList[i - 1]) #將windows下的非法字符一律替換為_
            contentPath = os.path.join(comicPath, '第{0:0>4}話-{1}'.format(i, contentNameList[i - 1]))
 
            try:
                print('正在下載第{0:0>4}話: {1}'.format(i, contentNameList[i -1]))
            except Exception:
                print('正在下載第{0:0>4}話: {1}'.format(i))
 
            if not one_folder:
                if not os.path.isdir(contentPath):
                    os.mkdir(contentPath)
 
            imgList = getImgList(contentList[i - 1], id)
            downloadImg(imgList, contentPath, one_folder)
 
    except ErrorCode as e:
        exit(e.code)
    
if __name__ == '__main__':
    defaultPath = os.path.join(os.path.expanduser('~'), 'tencent_comic')
 
    parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter,
                                     description='*下載騰訊漫畫,僅供學習交流,請勿用于非法用途*\n'
                                     '空參運行進入交互式模式運行。')
    parser.add_argument('-u', '--url', help='要下載的漫畫的首頁,可以下載以下類型的url: \n'
            'http://ac.qq.com/Comic/comicInfo/id/511915\n'
            'http://m.ac.qq.com/Comic/comicInfo/id/505430\n'
            'http://pad.ac.qq.com/Comic/comicInfo/id/505430\n'
            'http://ac.qq.com/naruto')
    parser.add_argument('-p', '--path', help='漫畫下載路徑。 默認: {}'.format(defaultPath), 
                default=defaultPath)
    parser.add_argument('-d', '--dir', action='store_true', help='將所有圖片下載到一個目錄(適合騰訊漫畫等軟件連看使用)')
    parser.add_argument('-l', '--list', help=("要下載的漫畫章節列表,不指定則下載所有章節。格式范例: \n"
                                              "N - 下載具體某一章節,如-l 1, 下載第1章\n"
                                              'N,N... - 下載某幾個不連續的章節,如 "-l 1,3,5", 下載1,3,5章\n'
                                              'N-N... - 下載某一段連續的章節,如 "-l 10-50", 下載[10,50]章\n'
                                              '雜合型 - 結合上面所有的規則,如 "-l 1,3,5-7,11-111"'))
    args = parser.parse_args()
    url = args.url
    path = args.path
    lst = args.list
    one_folder = args.dir
 
    if lst:
        legalListRE = re.compile(r'^\d+([,-]\d+)*$')
        if not legalListRE.match(lst):
            print('LIST參數不合法,請參考--help鍵入合法參數!')
            exit(1)
 
    if not url:
        url = input('請輸入漫畫首頁地址: ')
        path = input('請輸入漫畫保存路徑(默認: {}): '.format(defaultPath))
        if not path:
            path = defaultPath
 
    main(url, path, lst, one_folder)

五、下載源碼

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import getComic
import os
import re
import sys
 
class TencentComicDownloader(QWidget):
    def __init__(self, parent=None):
        super(TencentComicDownloader, self).__init__(parent)
 
        nameLabel = QLabel("漫畫首頁:")
 
        self.nameLine = QLineEdit()
 
        self.analysisButton = QPushButton("分析")
        self.analysisButton.clicked.connect(self.anaysisURL)
        self.nameLine.returnPressed.connect(self.analysisButton.click)
 
        pathLineLabel = QLabel("下載路徑:")
        self.pathLine = QLineEdit()
        defaultPath = os.path.join(os.path.expanduser('~'), 'tencent_comic')
        self.pathLine.setText(defaultPath)
        
        self.browseButton = QPushButton("瀏覽")
        self.browseButton.clicked.connect(self.getPath)
 
        comicNameLabel = QLabel("漫畫名: ")
        self.comicNameLabel = QLabel("暫無")
        self.one_folder_checkbox = QCheckBox("單目錄")
        
        comicIntroLabel = QLabel("簡介: ")
        self.comicIntro = QLabel("暫無")
        self.comicIntro.setWordWrap(True)
 
        chapterGroupBox = QGroupBox("章節列表:")
        
        self.chapterListView = QListWidget(chapterGroupBox)
        self.chapterListView.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.chapterListView.setEnabled(False)
 
        groupBoxLayout = QHBoxLayout(chapterGroupBox)
        groupBoxLayout.addWidget(self.chapterListView)
 
        self.downloadButton = QPushButton("下載選中")
        self.statusLabel = QLabel("輸入要下載的漫畫的首頁,然后點分析")
        self.statusLabel.setWordWrap(True)
 
        self.downloadButton.setEnabled(False)
        self.downloadButton.clicked.connect(self.download)
 
        mainLayout = QGridLayout()
        mainLayout.addWidget(nameLabel, 0, 0)
        mainLayout.addWidget(self.nameLine, 0, 1)
        mainLayout.addWidget(self.analysisButton, 0, 2)
        mainLayout.addWidget(pathLineLabel, 1, 0)
        mainLayout.addWidget(self.pathLine, 1, 1)
        mainLayout.addWidget(self.browseButton, 1, 2)
        mainLayout.addWidget(comicNameLabel, 2, 0)
        mainLayout.addWidget(self.comicNameLabel, 2, 1, 1, 2)
        mainLayout.addWidget(self.one_folder_checkbox, 2, 2)
        mainLayout.addWidget(comicIntroLabel, 3, 0)
        mainLayout.addWidget(self.comicIntro, 3, 1, 1, 2)
        mainLayout.addWidget(chapterGroupBox, 4, 0, 1, 3)
        mainLayout.addWidget(self.downloadButton, 5, 2)
        mainLayout.addWidget(self.statusLabel, 5, 0, 1, 2)
 
        self.setLayout(mainLayout)
        self.setWindowTitle("騰訊漫畫下載")
        self.setGeometry(400, 300, 800, 500)
 
    def setStatus(self, status):
        self.statusLabel.setText(status)
 
    def enableWidget(self, enable):
        widgets_list = [
                self.downloadButton,
                self.nameLine,
                self.pathLine,
                self.chapterListView,
                self.analysisButton,
                self.browseButton,
                self.one_folder_checkbox
        ]
        for widget in widgets_list:
            widget.setEnabled(enable)
 
        if enable:
            self.downloadButton.setText('下載選中')
            self.chapterListView.setFocus()
 
    def getPath(self):
        path = str(QFileDialog.getExistingDirectory(self, "選擇下載目錄"))
        if path:
            self.pathLine.setText(path)
 
    def anaysisURL(self):
        url = self.nameLine.text()
 
        self.downloadButton.setEnabled(False)
        self.comicNameLabel.setText("暫無")
        self.comicIntro.setText("暫無")
        self.chapterListView.clear()
        self.chapterListView.setEnabled(False)
 
        try:
            if getComic.isLegelUrl(url):
                self.id = getComic.getId(url)
                self.comicName,self.comicIntrd,self.count,self.contentList = getComic.getContent(self.id)
 
                self.contentNameList = []
                for item in self.contentList:
                    for k in item:
                        self.contentNameList.append(item[k]['t'])
                
                self.comicNameLabel.setText(self.comicName)
                self.comicIntro.setText(self.comicIntrd)
                self.chapterListView.setEnabled(True)
                self.downloadButton.setEnabled(True)
                self.chapterListView.setFocus()
                self.statusLabel.setText('選擇要下載的章節后點擊右側按鈕')
 
                for i in range(len(self.contentNameList)):
                    self.chapterListView.addItem('第{0:0>4}話-{1}'.format(i+1, self.contentNameList[i]))
                    self.chapterListView.item(i).setSelected(True)
 
                self.downloadButton.setEnabled(True)
 
            else:
                self.statusLabel.setText('font color="red">錯誤的URL格式!請輸入正確的漫畫首頁地址!/font>')
 
        except getComic.ErrorCode as e:
            if e.code == 2:
                self.statusLabel.setText('font color="red">無法跳轉為移動端URL,請進入http://m.ac.qq.com找到該漫畫地址/font>')
 
        except KeyError:
            self.statusLabel.setText('font color="red">不存在的地址/font>')
 
    def download(self):
        self.downloadButton.setText("下載中...")
        one_folder = self.one_folder_checkbox.isChecked()
 
        self.enableWidget(False)
 
        selectedChapterList = [ item.row() for item in self.chapterListView.selectedIndexes() ]
 
        path = self.pathLine.text()
        comicName = self.comicName
        forbiddenRE = re.compile(r'[\\/":*?>|]') #windows下文件名非法字符\ / : * ? "  > |
        comicName = re.sub(forbiddenRE, '_', comicName) #將windows下的非法字符一律替換為_
        comicPath = os.path.join(path, comicName)
 
        if not os.path.isdir(comicPath):
            os.makedirs(comicPath)
 
        self.downloadThread = Downloader(selectedChapterList, comicPath, self.contentList, self.contentNameList, self.id, one_folder)
        self.downloadThread.output.connect(self.setStatus)
        self.downloadThread.finished.connect(lambda: self.enableWidget(True))
        self.downloadThread.start()
        
class Downloader(QThread):
    output = pyqtSignal(['QString'])
    finished = pyqtSignal()
 
    def __init__(self, selectedChapterList, comicPath, contentList, contentNameList, id, one_folder=False, parent=None):
        super(Downloader, self).__init__(parent)
 
        self.selectedChapterList = selectedChapterList
        self.comicPath = comicPath
        self.contentList = contentList
        self.contentNameList = contentNameList
        self.id = id
        self.one_folder = one_folder
 
    def run(self):
        try:
            for i in self.selectedChapterList:
                outputString = '正在下載第{0:0>4}話: {1}...'.format(i+1, self.contentNameList[i])
                print(outputString)
                self.output.emit(outputString)
                forbiddenRE = re.compile(r'[\\/":*?>|]') #windows下文件名非法字符\ / : * ? "  > |
                self.contentNameList[i] = re.sub(forbiddenRE, '_', self.contentNameList[i])
                contentPath = os.path.join(self.comicPath, '第{0:0>4}話-{1}'.format(i+1, self.contentNameList[i]))
                if not self.one_folder:
                    if not os.path.isdir(contentPath):
                        os.mkdir(contentPath)
                imgList = getComic.getImgList(self.contentList[i], self.id)
                getComic.downloadImg(imgList, contentPath, self.one_folder)
                
                self.output.emit('完畢!')
       
        except Exception as e:
            self.output.emit('font color="red">{}/font>\n'
                    '遇到異常!請嘗試重新點擊下載按鈕重試'.format(e))
            raise
 
        finally:
            self.finished.emit()
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
 
    main = TencentComicDownloader()
    main.show()
 
    app.exec_()

到此這篇關于再也不用花錢買漫畫!Python下載某漫畫的腳本及源碼的文章就介紹到這了,更多相關Python下載漫畫內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于Python實現ComicReaper漫畫自動爬取腳本過程解析
  • python 爬取天氣網衛星圖片
  • Python爬蟲實戰之爬取京東商品數據并實實現數據可視化
  • 高考要來啦!用Python爬取歷年高考數據并分析
  • Python爬蟲實戰之使用Scrapy爬取豆瓣圖片
  • 只用50行Python代碼爬取網絡美女高清圖片

標簽:撫州 楊凌 六盤水 南寧 揚州 牡丹江 迪慶 聊城

巨人網絡通訊聲明:本文標題《再也不用花錢買漫畫!Python爬取某漫畫的腳本及源碼》,本文關鍵詞  再也,不用,花錢,買,漫畫,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《再也不用花錢買漫畫!Python爬取某漫畫的腳本及源碼》相關的同類信息!
  • 本頁收集關于再也不用花錢買漫畫!Python爬取某漫畫的腳本及源碼的相關信息資訊供網民參考!
  • 推薦文章
    精品午夜一区二区三区在线观看| 国产日韩综合一区二区性色av| 精品小视频在线| 日韩成人小视频| 亚洲摸摸操操av| 国产精品久久久久久久久免费樱桃 | 亚洲怡红院在线观看| 免费在线观看不卡| 成人精品在线视频观看| 亚洲天堂久久久久久久| www国产精品av| 国产一区二区三区综合| 日韩欧美视频一区二区三区| 99精品视频网站| 亚洲欧洲视频在线观看| 一区二区三区天堂av| 一区二区三区四区免费观看| 亚洲av无码久久精品色欲| av电影在线不卡| 免费成年人视频在线观看| 亚洲精品福利网站| 一区二区日韩在线观看| 色婷婷狠狠18禁久久| 日韩妆和欧美的一区二区| 日韩av三级在线观看| 成人观看免费完整观看| 久草视频手机在线观看| 日日夜夜操视频| 成人精品小蝌蚪| 欧美一级视频一区二区| www五月天com| 日韩电影大全在线观看| 久久久999| 欧美系列一区二区| 波波电影院一区二区三区| 狠狠躁夜夜躁人人躁婷婷91| 91久久在线观看| 国内精品国语自产拍在线观看| 国产中文欧美精品| 女人另类性混交zo| 成人福利视频在线看| 亚洲大片一区二区三区| 性欧美激情精品| 欧美成人福利在线观看| 国产美女三级视频| 亚洲色图欧美视频| 欧美国产中文字幕| 亚洲小视频网站| 91碰在线视频| 性欧美xxxx交| 成年人在线免费看片| caoporn国产一区二区| 中文字幕av资源一区| 日韩欧美在线一区二区三区| 91深夜福利视频| 欧美高清视频在线| 国产一区喷水| 麻豆91在线播放| 超在线视频97| 日韩高清第一页| 精品在线你懂的| 亚洲人成人99网站| 国产精品网站入口| 日韩av片永久免费网站| 中文字幕免费高清| 欧美日产在线观看| 欧美88888| 欧美在线色视频| 97se视频在线观看| 精品亚洲国产成人av制服丝袜 | 日韩高清不卡在线| 欧美日韩第一区日日骚| 五月天色婷婷综合| 亚洲欧美色视频| 国产又黄又爽视频| 亚洲精品中文字幕成人片| 久久国产福利国产秒拍| 欧美国产成人精品| 九九热久久66| jizz国产在线| 久久久精品黄色| 欧美综合在线第二页| 国产一级视频在线观看| 国产精品一区二区久久国产| 成人精品鲁一区一区二区| 色综合久久88色综合天天提莫| 日韩不卡av在线| 中文一区在线播放| 国产精品第2页| 日韩免费av网站| 色综合天天做天天爱| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩成人网| 一本色道久久综合亚洲二区三区 | 日韩福利在线视频| 国产精品久久久久婷婷| 中文字幕不卡每日更新1区2区| 婷婷夜色潮精品综合在线| 久久成人国产精品入口| 中文字幕一区二区三区四区五区| 欧美视频自拍偷拍| 中文字字幕码一二三区| 欧美日韩国产精品一区二区三区四区| 亚洲免费不卡| 国内久久精品视频| 国产精品久久久久影院日本| 97中文字幕在线观看| 久久高清免费视频| 成人av电影在线观看| 日韩一级二级三级| 国产欧美123| 一区二区三区四区在线播放| 国产裸体舞一区二区三区| 欧美国产日韩一二三区| 国产美女精品在线观看| www视频在线| 欧美日韩成人激情| 91久热免费在线视频| 噜噜噜久久,亚洲精品国产品| 国产精品久久久久久搜索 | 亚洲熟妇无码久久精品| 欧美一级欧美三级在线观看| 国产又黄又猛的视频| 亚洲精品高清在线| 国产精品一级无码| 成人一级黄色片| 亚洲精品www久久久| 婷婷视频在线播放| 国产成人精品无码高潮| 在线精品国产欧美| www日本高清| 96国产粉嫩美女| 日韩av电影一区| 黄色一级片网址| 亚洲第一成年网| 免费网站在线高清观看| 91麻豆精品久久久久蜜臀| 亚洲人精品午夜射精日韩| 中文字幕精品国产| 久久一区二区三区视频| 不卡一区二区三区四区| 97超级碰碰碰| 成人久久久精品乱码一区二区三区 | 精品少妇一区二区三区在线播放| 丰满人妻老熟妇伦人精品| 久久日一线二线三线suv| 精品国产人妻一区二区三区| 另类少妇人与禽zozz0性伦| 综合电影一区二区三区| 日本va欧美va欧美va精品| 久久久久国产精品夜夜夜夜夜| 成年女人18级毛片毛片免费| 高清欧美电影在线| 老牛影视av牛牛影视av| 国产精品老女人精品视频| 亚洲免费av高清| 中文字幕乱码在线人视频| www.久久久久| 极品久久久久久| 国产精品欧美激情在线播放| 亚洲美女偷拍久久| 手机在线免费观看毛片| 尤物九九久久国产精品的特点| 国产91在线观看| 久久精品久久久久久国产 免费| 狠狠色狠狠色综合系列| 亚洲午夜激情影院| 国产精品12| 中文字幕日韩综合av| 亚洲另类一区二区| 欧美xxxooo| 99热国产免费| 亚洲剧情一区二区| 欧美日韩成人免费视频| 欧美性猛交xxxxx水多| 国产日韩欧美中文字幕| 亚洲成人自拍视频| 岛国精品在线观看| 一级黄色在线播放| 亚洲一二三在线| 99久久精品国产色欲| 欧美国产日韩一区二区| 可以看av的网站久久看| 神马影院一区二区| 丁香婷婷综合色啪| 欧美亚洲国产成人| 欧美主播一区二区三区| 高清在线观看免费| 色综合激情五月| 色欲色香天天天综合网www| 久久久久久久久久久黄色| 日韩免费av电影| 国产精品成人一区二区艾草 | 亚洲国产毛片完整版| 黄色激情视频在线观看| 久久精品国产亚洲一区二区 | 亚洲免费一级片| caoporn国产精品免费公开| 在线免费观看av片| 亚洲激情一区二区三区| 在线观看av一区| 亚洲成人黄色av| 欧美一区二区三区免费大片| 999久久久精品视频| 欧美草草影院在线视频| 亚洲熟妇一区二区三区| 在线日韩第一页| 91亚洲国产成人久久精品麻豆| 97精品视频在线| 国产夫绿帽单男3p精品视频| 欧美日本黄视频| 欧美激情精品久久久久久变态| 免费视频网站在线观看入口| av免费观看久久| 18欧美亚洲精品| 在线免费观看黄色小视频| 久久久免费精品视频| 国产精品亚洲第一| 超碰在线免费av| 欧美大奶子在线| 国产成人精品www牛牛影视| 国产三级生活片| 欧美大片在线看免费观看| 国产精品自拍av| 不许穿内裤随时挨c调教h苏绵| 中文字幕精品av| 国内外成人在线| 欧美精品色视频| 久久久免费精品| 欧美国产精品久久| 国产精品久久久视频| 成人情趣片在线观看免费| 一区二区三区在线免费播放| 国产精品111| 日韩精品最新在线观看| 欧美日韩aaaaa| 亚洲风情第一页| 99久久国产宗和精品1上映| 久久精品久久精品亚洲人| 99久久99久久精品免费观看| 手机免费看av片| 国产美女被下药99| 精品久久久在线观看| 91av久久久| 国产裸体舞一区二区三区| 久久久精品久久久| 欧美激情中文字幕| 久久久精品视频免费| 综合视频在线观看| 亚洲性线免费观看视频成熟| 不卡大黄网站免费看| 性欧美疯狂猛交69hd| 欧美动漫一区二区| 精品国产一区二区三区久久影院| 秋霞av亚洲一区二区三| ass精品国模裸体欣赏pics| 成人三级视频在线观看一区二区| 欧美日韩国产精品成人| 日韩和的一区二区| 亚洲熟女乱综合一区二区三区| 成人黄色av网| 91精品国产综合久久小美女| 美国欧美日韩国产在线播放| 六月婷婷七月丁香| 视频一区二区在线观看| 亚洲香蕉成人av网站在线观看 | www中文在线| 日韩精品久久一区| 国产亚洲激情在线| 亚洲图片激情小说| 国产露脸国语对白在线| 毛片毛片毛片毛| 亚洲最大福利视频网站| 精品美女一区二区| 久久众筹精品私拍模特| 黄色av网站免费| 亚洲黄色片免费看| 国产一区二区不卡视频| 亚洲成色999久久网站| 久久久久久99久久久精品网站| 亚洲欧美综合另类| 亚洲综合婷婷久久| 999视频在线免费观看| 日韩精品视频在线观看网址| 国产日韩v精品一区二区| 亚洲特级黄色片| 久久国产劲爆∧v内射| 任我爽在线视频精品一| 欧美剧在线观看| 色老头久久综合| 国产乱妇无码大片在线观看| 国产一级片免费观看| 免费黄色一级网站| 国产亚洲欧美另类一区二区三区| 在线成人激情视频| 婷婷久久综合九色综合伊人色| 免费观看久久久4p| 好吊操这里只有精品| 天天色天天综合网| 四虎一区二区| 日韩美女免费视频| 日韩av在线高清| 亚洲午夜免费电影| 国产老肥熟一区二区三区| 男人的天堂av网站| 波多野结衣福利| 精品少妇在线视频| 99国产超薄肉色丝袜交足的后果| 爽爽爽爽爽爽爽成人免费观看| 日韩欧美亚洲范冰冰与中字| 福利电影一区二区| 国产精品人人妻人人爽| 亚洲一级二级片| 黄色在线视频网| 亚洲一区不卡在线| 成人久久久久久| 日韩视频在线免费观看| 日本二三区不卡| 国产欧美日韩在线看| 蜜臀精品久久久久久蜜臀| 久久久久久久久久久影院| 国产精品1000部啪视频| 久久国产乱子伦免费精品| 国产区一区二区三区| 欧美一区二区.| 国产亚洲精品美女久久久| 欧美日韩亚洲综合在线| 亚洲色图在线播放| av中文字幕不卡| 三级欧美韩日大片在线看| 欧美精品一二三四区| 国产午夜福利一区| 中文字幕avav| 日批视频在线免费看| 亚洲欧美日韩精品综合在线观看| 成人免费观看a| 国精产品一区一区三区有限在线| 国产午夜精品麻豆| 欧美日韩在线不卡| 亚洲r级在线视频| 国产精品视频看| 99精品视频一区二区三区| 免费成人美女在线观看| 精品人妻午夜一区二区三区四区| 国产一级做a爰片在线看免费| 一级片视频免费看| 无码国产精品一区二区免费式直播| 波多野结衣家庭教师在线| 强伦女教师2:伦理在线观看| 久久久久久九九| 3d精品h动漫啪啪一区二区| 国产精品国产亚洲伊人久久 | 性生交大片免费全黄| 亚洲第一黄色网址| 波多野结衣三级视频| 一区二区免费av| av日韩一区二区三区| 久久久久国产精品一区三寸| 亚洲色图第三页| 色一情一区二区| 日韩国产成人精品| avtt天堂在线| 99久久精品免费视频| 在线观看亚洲免费视频| 久久艹这里只有精品| 看看黄色一级片| 天天干天天曰天天操| 在线a免费观看| 欧美精品色视频| 精品人妻二区中文字幕| jjzzjjzz欧美69巨大| 免费成人深夜夜行p站| 人妻大战黑人白浆狂泄| 性猛交ⅹxxx富婆video| 国精产品视频一二二区| xxxx日本少妇| 欧美三级午夜理伦| 国产九色91回来了| www香蕉视频| 日韩电影一二三区| 精品一区二区精品| 粉嫩蜜臀av国产精品网站| 91香蕉视频在线| 国产亚洲午夜高清国产拍精品| 中文无字幕一区二区三区| 中文字幕一区二区在线观看| 一区二区在线观看视频| 亚洲一区二区欧美日韩| 91久久精品国产91性色tv| 欧美日韩精品二区第二页| 精品国产污污免费网站入口| 日韩精品视频在线观看网址| 久久久精品久久久| 国产精品久久久久久久久久久久| 成人午夜高潮视频| 日韩国产精品一区二区三区| 国产精品久久久久7777| 亚洲一区二区三区四区五区| 午夜男人的天堂| 国精产品一区一区二区三区mba| 国产乡下妇女做爰视频| 99er热精品视频| 精品亚洲porn| 中文字幕一区二区三区四区不卡 | 亚洲精品乱码久久久久久黑人| 亚洲大片在线观看| 日韩欧美成人激情| 久久久av电影| 成人黄在线观看| gogogo免费高清日本写真|