国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何爬取電影天堂的最新電影

開發(fā) 后端
前面兩篇文章介紹 requests 和 xpath 的用法。我們推崇學以致用,所以本文講解利用這兩個工具進行實戰(zhàn)。

[[217334]]

前面兩篇文章介紹 requests 和 xpath 的用法。我們推崇學以致用,所以本文講解利用這兩個工具進行實戰(zhàn)。

0 爬取目標

本次爬取的站點選擇電影天堂,網址是: www.dytt8.net。爬取內容是整個站點的所有電影信息,包括電影名稱,導演、主演、下載地址等。具體抓取信息如下圖所示:

1 設計爬蟲程序

2.1 確定爬取入口

電影天堂里面的電影數目成千上萬,電影類型也是讓人眼花繚亂。我們?yōu)榱吮WC爬取的電影信息不重復, 所以要確定一個爬取方向。目前這情況真讓人無從下手。但是,我們點擊主頁中的【最新電影】選項,跳進一個新的頁面。驀然有種柳暗花明又一村的感覺。

由圖可知道,電影天堂有 5 個電影欄目,分別為最新電影、日韓電影、歐美電影、國內電影、綜合電影。每個欄目又有一定數量的分頁,每個分頁有 25 條電影信息。那么程序的入口可以有 5 個 url 地址。這 5 個地址分別對應每個欄目的首頁鏈接。

2.2 爬取思路

知道爬取入口,后面的工作就容易多了。我通過測試發(fā)現這幾個欄目除了頁面的 url 地址不一樣之外,其他例如提取信息的 xpath 路徑是一樣的。因此,我把 5 個欄目當做 1  個類,再該類進行遍歷爬取。

我這里“最新電影”為例說明爬取思路。

1)請求欄目的首頁來獲取到分頁的總數,以及推測出每個分頁的 url 地址;

2)將獲取到的分頁 url 存放到名為 floorQueue 隊列中;

3)從 floorQueue 中依次取出分頁 url,然后利用多線程發(fā)起請求;

4)將獲取到的電影頁面 url 存入到名為 middleQueue 的隊列;

5)從 middleQueue 中依次取出電影頁面 url,再利用多線程發(fā)起請求;

6)將請求結果使用 Xpath 解析并提取所需的電影信息;

7)將爬取到的電影信息存到名為 contentQueue 隊列中;

8)從 contentQueue 隊列中依次取出電影信息,然后存到數據庫中。

2.3 設計爬蟲架構

根據爬取思路,我設計出爬蟲架構。如下圖所示:

2.4 代碼實現

主要闡述幾個重要的類的代碼

  • main 類

主要工作兩個:第一,實例化出一個dytt8Moive對象,然后開始爬取信息。第二,等爬取結束,將數據插入到數據庫中。

處理爬蟲的邏輯代碼如下: 

  1. # 截止到2017-08-08, 最新電影一共才有 164 個頁面  
  2. LASTEST_MOIVE_TOTAL_SUM = 6 #164  
  3. # 請求網絡線程總數, 線程不要調太好, 不然會返回很多 400  
  4. THREAD_SUM = 5  
  5. def startSpider():  
  6.    # 實例化對象   
  7.    # 獲取【最新電影】有多少個頁面  
  8.    LASTEST_MOIVE_TOTAL_SUM = dytt_Lastest.getMaxsize()  
  9.    print('【最新電影】一共  ' + str(LASTEST_MOIVE_TOTAL_SUM) + '  有個頁面' 
  10.    dyttlastest = dytt_Lastest(LASTEST_MOIVE_TOTAL_SUM)  
  11.    floorlist = dyttlastest.getPageUrlList()  
  12.    floorQueue = TaskQueue.getFloorQueue()  
  13.    for item in floorlist:  
  14.        floorQueue.put(item, 3)  
  15.    # print(floorQueue.qsize())   
  16.    for i in range(THREAD_SUM):  
  17.        workthread = FloorWorkThread(floorQueue, i)  
  18.        workthread.start()  
  19.    while True 
  20.        if TaskQueue.isFloorQueueEmpty():  
  21.            break  
  22.        else 
  23.            pass   
  24.    for i in range(THREAD_SUM):  
  25.        workthread = TopWorkThread(TaskQueue.getMiddleQueue(), i) 
  26.        workthread.start()   
  27.    while True 
  28.        if TaskQueue.isMiddleQueueEmpty(): 
  29.            break 
  30.        else: 
  31.            pass  
  32.    insertData()   
  33. if __name__ == '__main__' 
  34.    startSpider() 

創(chuàng)建數據庫以及表,接著再把電影信息插入到數據庫的代碼如下: 

  1. def insertData():  
  2.    DBName = 'dytt.db'  
  3.    db = sqlite3.connect('./' + DBName, 10)  
  4.    conn = db.cursor()    
  5.    SelectSql = 'Select * from sqlite_master where type = "table" and name="lastest_moive";'  
  6.    CreateTableSql = '' 
  7.        Create Table lastest_moive (  
  8.            'm_id' INTEGER PRIMARY KEY 
  9.            'm_type' varchar(100),  
  10.            'm_trans_name' varchar(200),  
  11.            'm_name' varchar(100),  
  12.            'm_decade' varchar(30),  
  13.            'm_conutry' varchar(30),  
  14.            'm_level' varchar(100),
  15.            'm_language' varchar(30),  
  16.            'm_subtitles' varchar(100),  
  17.            'm_publish' varchar(30),  
  18.            'm_IMDB_socre' varchar(50), 
  19.            'm_douban_score' varchar(50),  
  20.            'm_format' varchar(20),  
  21.            'm_resolution' varchar(20),  
  22.            'm_size' varchar(10),  
  23.            'm_duration' varchar(10),  
  24.            'm_director' varchar(50),  
  25.            'm_actors' varchar(1000),  
  26.            'm_placard' varchar(200), 
  27.            'm_screenshot' varchar(200),  
  28.            'm_ftpurl' varchar(200), 
  29.            'm_dytt8_url' varchar(200) 
  30.         );  
  31.    ''   
  32.    InsertSql = '' 
  33.        Insert into lastest_moive(m_type, m_trans_name, m_name, m_decade, m_conutry, m_level, m_language, m_subtitles, m_publish, m_IMDB_socre,   
  34.        m_douban_score, m_format, m_resolution, m_size, m_duration, m_director, m_actors, m_placard, m_screenshot, m_ftpurl,  
  35.        m_dytt8_url)  
  36.        values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);   
  37.    ''    
  38.    if not conn.execute(SelectSql).fetchone():  
  39.        conn.execute(CreateTableSql)  
  40.        db.commit()  
  41.        print('====  創(chuàng)建表成功  ====' 
  42.    else
  43.         print('====  創(chuàng)建表失敗, 表已經存在  ====')  
  44.    count = 1   
  45.    while not TaskQueue.isContentQueueEmpty():  
  46.        item = TaskQueue.getContentQueue().get() 
  47.        conn.execute(InsertSql, Utils.dirToList(item))  
  48.        db.commit()  
  49.        print('插入第 ' + str(count) + ' 條數據成功' 
  50.        count = count + 1   
  51.    db.commit()  
  52.    db.close() 

TaskQueue 類

維護 floorQueue、middleQueue、contentQueue 三個隊列的管理類。之所以選擇隊列的數據結構,是因為爬蟲程序需要用到多線程,隊列能夠保證線程安全。

dytt8Moive 類

dytt8Moive 類是本程序的主心骨。程序最初的爬取目標是 5 個電影欄目,但是目前只現實了爬取最新欄目。如果你想爬取全部欄目電影,只需對 dytt8Moive 稍微改造下即可。 

  1. class dytt_Lastest(object):  
  2.    # 獲取爬蟲程序抓取入口  
  3.    breakoutUrl = 'http://www.dytt8.net/html/gndy/dyzz/index.html'    
  4.    def __init__(self, sum):  
  5.        self.sum = sum   
  6.    # 獲取【最新電影】有多少個頁面  
  7.    # 截止到2017-08-08, 最新電影一共才有 164 個頁面  
  8.    @classmethod  
  9.    def getMaxsize(cls):  
  10.        response = requests.get(cls.breakoutUrl, headers=RequestModel.getHeaders(), proxies=RequestModel.getProxies(), timeout=3)  
  11.        # 需將電影天堂的頁面的編碼改為 GBK, 不然會出現亂碼的情況  
  12.        response.encoding = 'GBK'    
  13.        selector = etree.HTML(response.text)  
  14.        # 提取信息  
  15.        optionList = selector.xpath("//select[@name='sldd']/text()" 
  16.        return len(optionList) - 1   # 因首頁重復, 所以要減1   
  17.    def getPageUrlList(self):  
  18.        '' 
  19.        主要功能:目錄頁url取出,比如:http://www.dytt8.net/html/gndy/dyzz/list_23_'+ str(i) + '.html 
  20.        '' 
  21.        templist = []  
  22.        request_url_prefix = 'http://www.dytt8.net/html/gndy/dyzz/'  
  23.        templist = [request_url_prefix + 'index.html' 
  24.        for i in range(2, self.sum + 1):  
  25.            templist.append(request_url_prefix + 'list_23_' + str(i) + '.html' 
  26.        for t in templist:  
  27.            print('request url is ###   ' + t + '    ###' 
  28.        return templist    
  29.    @classmethod  
  30.    def getMoivePageUrlList(cls, html):  
  31.        '' 
  32.        獲取電影信息的網頁鏈接  
  33.        '' 
  34.        selector = etree.HTML(html)  
  35.        templist = selector.xpath("//div[@class='co_content8']/ul/td/table/tr/td/b/a/@href" 
  36.        # print(len(templist))  
  37.        # print(templist) 
  38.        return templist   
  39.    @classmethod  
  40.    def getMoiveInforms(cls, url, html):  
  41.        '' 
  42.        解析電影信息頁面的內容, 具體如下: 
  43.        類型        : 疾速特攻/疾速追殺2][BD-mkv.720p.中英雙字][2017年高分驚悚動作]  
  44.        ◎譯名      : ◎譯\u3000\u3000名\u3000疾速特攻/殺神John Wick 2(港)/捍衛(wèi)任務2(臺)/疾速追殺2/極速追殺:第二章/約翰·威克2  
  45.        ◎片名      : ◎片\u3000\u3000名\u3000John Wick: Chapter Two 
  46.        ◎年代     : ◎年\u3000\u3000代\u30002017  
  47.        ◎國家     : ◎產\u3000\u3000地\u3000美國  
  48.        ◎類別     : ◎類\u3000\u3000別\u3000動作/犯罪/驚悚  
  49.        ◎語言     : ◎語\u3000\u3000言\u3000英語  
  50.        ◎字幕     : ◎字\u3000\u3000幕\u3000中英雙字幕  
  51.        ◎上映日期  :◎上映日期\u30002017-02-10(美國)  
  52.        ◎IMDb評分  : ◎IMDb評分\xa0 8.1/10 from 86,240 users  
  53.        ◎豆瓣評分  : ◎豆瓣評分\u30007.7/10 from 2,915 users  
  54.        ◎文件格式   : ◎文件格式\u3000x264 + aac  
  55.        ◎視頻尺寸  : ◎視頻尺寸\u30001280 x 720  
  56.        ◎文件大小  : ◎文件大小\u30001CD  
  57.        ◎片長     : ◎片\u3000\u3000長\u3000122分鐘  
  58.        ◎導演     : ◎導\u3000\u3000演\u3000查德·史塔赫斯基 Chad Stahelski  
  59.        ◎主演     :  
  60.        ◎簡介      : 暫不要該字段  
  61.        ◎獲獎情況   : 暫不要該字段  
  62.        ◎海報  
  63.        影片截圖  
  64.        下載地址  
  65.        '' 
  66.        # print(html)  
  67.        contentDir = {  
  68.            'type''' 
  69.            'trans_name''' 
  70.            'name''' 
  71.            'decade''' 
  72.            'conutry''' 
  73.            'level''' 
  74.            'language''' 
  75.            'subtitles''' 
  76.            'publish''' 
  77.            'IMDB_socre''' 
  78.            'douban_score''' 
  79.            'format''' 
  80.            'resolution''' 
  81.            'size''' 
  82.            'duration''' 
  83.            'director''' 
  84.            'actors''' 
  85.            'placard''' 
  86.            'screenshot''' 
  87.            'ftpurl''' 
  88.            'dytt8_url'''  
  89.        }    
  90.        selector = etree.HTML(html)  
  91.        content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/p/text()" 
  92.        # 匹配出來有兩張圖片, 第一張是海報, 第二張是電影畫面截圖  
  93.        imgs = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/p/img/@src" 
  94.        # print(content)   
  95.        # 為了兼容 2012 年前的頁面  
  96.        if not len(content):  
  97.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/span/text()" 
  98.        # 有些頁面特殊, 需要用以下表達式來重新獲取信息  
  99.        # 電影天堂頁面好混亂啊~  
  100.        if not len(content):  
  101.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/div/text()"  
  102.        if not len(content):  
  103.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/p/font/text()" 
  104.            if len(content) < 5:  
  105.                content = selector.xpath("//div[@class='co_content8']/ul/tr/td/p/font/text()"   
  106.        if not len(content): 
  107.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/p/span/text()"   
  108.        if not len(content): 
  109.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/div/span/text()"  
  110.        if not len(content):  
  111.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/font/text()"  
  112.        if not len(content):  
  113.            content = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/p/text()"  
  114.        # print(content)    
  115.        # 不同渲染頁面要采取不同的抓取方式抓取圖片 
  116.        if not len(imgs):  
  117.            imgs = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/img/@src"  
  118.        if not len(imgs):  
  119.            imgs = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/p/img/@src"  
  120.        if not len(imgs):  
  121.            imgs = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/div/img/@src"   
  122.        if not len(imgs):  
  123.            imgs = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/div/img/@src"   
  124.        # 類型  
  125.        if content[0][0:1] != '◎' 
  126.            contentDir['type'] = '[' + content[0]   
  127.        actor = ''    
  128.        for each in content:  
  129.            if each[0:5] == '◎譯\u3000\u3000名' 
  130.                # 譯名 ◎譯\u3000\u3000名\u3000  一共占居6位  
  131.                contentDir['trans_name'] = each[6: len(each)]  
  132.            elif each[0:5] == '◎片\u3000\u3000名' 
  133.                # 片名  
  134.                contentDir['name'] = each[6: len(each)]  
  135.            elif each[0:5] == '◎年\u3000\u3000代' 
  136.                # 年份  
  137.                contentDir['decade'] = each[6: len(each)]  
  138.            elif each[0:5] == '◎產\u3000\u3000地' 
  139.                # 產地  
  140.                contentDir['conutry'] = each[6: len(each)]  
  141.            elif each[0:5] == '◎類\u3000\u3000別' 
  142.                # 類別  
  143.                contentDir['level'] = each[6: len(each)]  
  144.            elif each[0:5] == '◎語\u3000\u3000言' 
  145.                # 語言  
  146.                contentDir['language'] = each[6: len(each)]  
  147.            elif each[0:5] == '◎字\u3000\u3000幕' 
  148.                # 字幕  
  149.                contentDir['subtitles'] = each[6: len(each)]  
  150.            elif each[0:5] == '◎上映日期' 
  151.                # 上映日期  
  152.                contentDir['publish'] = each[6: len(each)]  
  153.            elif each[0:7] == '◎IMDb評分' 
  154.                # IMDb評分  
  155.                contentDir['IMDB_socre'] = each[9: len(each)]  
  156.            elif each[0:5] == '◎豆瓣評分' 
  157.                # 豆瓣評分  
  158.                contentDir['douban_score'] = each[6: len(each)]  
  159.            elif each[0:5] == '◎文件格式' 
  160.                # 文件格式  
  161.                contentDir['format'] = each[6: len(each)]  
  162.            elif each[0:5] == '◎視頻尺寸' 
  163.                # 視頻尺寸  
  164.                contentDir['resolution'] = each[6: len(each)]  
  165.            elif each[0:5] == '◎文件大小' 
  166.                # 文件大小  
  167.                contentDir['size'] = each[6: len(each)]  
  168.            elif each[0:5] == '◎片\u3000\u3000長' 
  169.                # 片長  
  170.                contentDir['duration'] = each[6: len(each)]  
  171.            elif each[0:5] == '◎導\u3000\u3000演' 
  172.                # 導演  
  173.                contentDir['director'] = each[6: len(each)]  
  174.            elif each[0:5] == '◎主\u3000\u3000演' 
  175.                # 主演  
  176.                actor = each[6: len(each)]    
  177.        for item in content:  
  178.            if item[0: 4] == '\u3000\u3000\u3000\u3000' 
  179.                actor = actor + '\n' + item[6: len(item)]    
  180.        # 主演  
  181.        contentDir['actors'] = actor  
  182.        # 海報  
  183.        if imgs[0] != None:  
  184.            contentDir['placard'] = imgs[0]  
  185.        # 影片截圖  
  186.        if imgs[1] != None:  
  187.            contentDir['screenshot'] = imgs[1]  
  188.        # 下載地址  
  189.        ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/table/tbody/tr/td/a/text()"  
  190.        # 為了兼容 2012 年前的頁面  
  191.        if not len(ftp):  
  192.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/table/tbody/tr/td/font/a/text()"  
  193.        if not len(ftp): 
  194.             ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/table/tbody/tr/td/a/text()"   
  195.        if not len(ftp):  
  196.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/div/table/tbody/tr/td/font/a/text()"  
  197.        if not len(ftp):  
  198.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/div/table/tbody/tr/td/a/text()"  
  199.        if not len(ftp):  
  200.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/td/table/tbody/tr/td/a/text()"  
  201.        if not len(ftp):  
  202.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/p/span/a/text()"  
  203.        if not len(ftp):  
  204.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/div/div/table/tbody/tr/td/font/a/text()"  
  205.        if not len(ftp):  
  206.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/span/table/tbody/tr/td/font/a/text()"  
  207.        if not len(ftp):  
  208.            ftp = selector.xpath("//div[@class='co_content8']/ul/tr/td/div/div/td/div/span/div/table/tbody/tr/td/font/a/text()" 
  209.        contentDir['ftpurl'] = ftp[0]  
  210.        # 頁面鏈接  
  211.        contentDir['dytt8_url'] = url  
  212.        print(contentDir)  
  213.        return contentDir 

getMoiveInforms 方法是主要負責解析電影信息節(jié)點并將其封裝成字典。在代碼中,你看到 Xpath 的路徑表達式不止一條。因為電影天堂的電影詳情頁面的排版參差不齊,所以單單一條內容提取表達式、海報和影片截圖表達式、下載地址表達式遠遠無法滿足。

選擇字典類型作為存儲電影信息的數據結構,也是自己爬坑之后才決定的。這算是該站點另一個坑人的地方。電影詳情頁中有些內容節(jié)點是沒有,例如類型、豆瓣評分,所以無法使用列表按順序保存。

2 爬取結果

我這里展示自己爬取最新欄目中 4000 多條數據中前面部分數據。 

附:源代碼地址(https://link.jianshu.com/?t=https://github.com/monkey-soft/MoivesSpider) 

 

責任編輯:龐桂玉 來源: 碼個蛋
相關推薦

2016-10-20 16:04:30

大數據電影

2022-09-23 15:38:19

NFT電影業(yè)代幣

2015-04-30 10:25:55

2021-01-14 16:00:52

VRVR電影3D電影

2018-07-25 13:47:51

彭于晏邪不壓正Python

2010-04-27 10:24:10

侵權案

2023-12-08 11:22:31

IT首席轉型官轉型

2014-12-17 10:15:55

喬布斯電影

2020-09-17 13:20:59

Python網絡爬蟲電影

2013-07-04 11:02:18

2024-01-24 11:24:39

VR虛擬現實電影制作

2022-04-01 15:36:05

Python推薦系統(tǒng)數據

2011-08-19 08:56:34

JavaJava風云

2010-01-27 13:54:52

IT電影

2024-07-30 16:36:11

2011-09-02 10:29:00

2009-02-27 14:05:00

2021-12-16 08:00:00

推薦系統(tǒng)MovieMat數據
點贊
收藏

51CTO技術棧公眾號

成人福利网站在线观看| 日本婷婷久久久久久久久一区二区 | 成人在线免费观看视频网站| 亚洲第一区色| 福利视频在线看| 91成人在线| japanese23hdxxxx日韩| 欧美性色视频在线| 中国女人做爰视频| 日韩在线一区二区三区| 国产成人精品福利一区二区三区| 国产影视精品一区二区三区| 午夜精品三级视频福利| 成人免费观看49www在线观看| 日韩成人在线视频网站| 在线免费观看a视频| 欧美丰满少妇xxxbbb| 日韩一二三四| 欧美日韩国产一区二区| 福利在线国产| 午夜久久电影网| 经典三级在线| 欧美老年两性高潮| 男女激情免费视频| 欧美手机在线| 91免费视频大全| 欧美日韩激情一区二区| 国产精品入口芒果| 一区二区三区日韩欧美精品| 岛国av免费在线观看| 蜜桃av一区二区三区| 亚洲成人在线网| 欧美最顶级丰满的aⅴ艳星| 777精品久无码人妻蜜桃| 免费在线观看av网站| 色偷偷成人一区二区三区91| 日韩在线免费播放| 欧美日韩综合不卡| 黄色网址在线免费观看| 日韩欧美中文字幕公布| 欧美大胆a人体大胆做受| 亚洲天堂av网| 国产999精品在线观看| 久久久综合av| 91精品天堂福利在线观看| 久久福利电影| 狠狠色丁香久久婷婷综合丁香| aa在线观看视频| 一区二区在线观看免费| 亚洲尤物在线视频| 日韩精品一区二区三区四区| 国产精品原创视频| 国产91露脸中文字幕在线| 尹人成人综合网| 日韩精品一区二区三区电影| 国产精品乱码人人做人人爱| 你懂的视频在线免费| 亚洲激情久久久| 秋霞蜜臀av久久电影网免费| 国产综合18久久久久久| 国产在线精品一区二区夜色| 91大神影片| 日韩亚洲欧美在线观看| 欧美天堂一区二区| 成人黄色短视频在线观看| 蜜臀av一区二区在线观看 | 白嫩亚洲一区二区三区| 国产精品扒开腿爽爽爽视频| 麻豆九一精品爱看视频在线观看免费| 人妻少妇精品无码专区二区| 精品久久久精品| 亚洲校园激情春色| 日本伊人精品一区二区三区介绍| 久久亚洲精品伦理| 黄色三级在线观看| 欧美r级电影在线观看| 欧美三级午夜理伦三级小说| 少妇精品久久久久久久久久| 日韩久久一区二区| 午夜欧美激情| 国产精品乱码一区二区三区| 久久伊人蜜桃av一区二区| 免费黄色网址在线观看| 欧美壮男野外gaytube| 国产乱码精品1区2区3区| 小水嫩精品福利视频导航| 日韩亚洲欧美成人| 亚洲色诱最新| 色视频在线播放| 欧美精品在线播放| 老司机午夜精品| 二区在线观看| 国产精品9999| wwwwww.欧美系列| 成人教育av| 视频一区二区在线| 欧美性生活久久| 日韩电影免费网址| 无码日韩人妻精品久久蜜桃| 精品视频www| 久久精品网址| 国产视频三级在线观看播放| 国产成人午夜视频网址| 久久综合久久综合九色| 黑人巨大精品| 亚洲在线不卡| 精品久久一区二区| 午夜在线观看免费一区| 欧美xxx.com| 91精品久久久久久久久青青| 亚洲男同1069视频| 精品三级av| 午夜免费看视频| 久久6精品影院| 成人av电影在线| 久久久天天操| 亚洲最大的av网站| 色综合色综合色综合| 国产一区二区视频在线播放| 国产精品永久免费视频| 香蕉视频官网在线观看日本一区二区| a天堂资源在线观看| 国产精品va在线| 日韩免费成人网| 日韩视频一区二区三区在线播放| 亚洲国产精品ⅴa在线观看| 亚洲国产精品一区| 欧美一级二区| 秋霞成人午夜伦在线观看| 亚洲精华液一区二区三区| 欧美视频第一区| 成人免费看片网址| 日韩一区二区在线观看视频| 久久久国产精品午夜一区ai换脸| 久久中文在线| 欧美电影院免费观看| 偷窥自拍亚洲色图| 精品美女调教视频| 在线xxxx| 伊人福利在线| 久久久精品在线视频| 午夜精品久久久久久99热| 亚洲欧洲视频| 日本免费一区二区视频| 福利一区二区| av二区在线| 91在线视频免费看| 免费av毛片在线看| 日韩在线视频在线观看| 欧美日韩国产精品一卡| 国产高清一区视频| 日本欧美黄网站| 男裸体无遮挡网站| 久久国产精彩视频| 国产亚洲精品精华液| 成人在线观看a| 成人中文字幕在线播放| 成人在线精品视频| 日韩欧美一区二区视频| 成人免费毛片高清视频| 99成人超碰| 久久青青色综合| 色就是色欧美| 狠狠躁夜夜躁人人爽天天天天97 | 国产精品毛片大码女人| 免费短视频成人日韩| 男同在线观看| 国产又大又长又粗又黄| 久久国产精品网站| 欧美视频免费在线| 精品在线一区二区三区| 国产毛片久久久| 国产福利小视频在线观看| 制服诱惑一区| 亚州欧美日韩中文视频| 欧美日韩国产综合视频在线观看| 国产成人亚洲综合a∨婷婷| 蜜臀91精品国产高清在线观看| 日本暖暖在线视频| 日本三级免费观看| 91免费看蜜桃| 色综合伊人色综合网| 精品国产91久久久| 国产一区二区美女| 天天色综合色| 蜜桃精品在线| 日韩a在线看| 91九色丨porny丨国产jk| 91欧美精品午夜性色福利在线| 亚洲欧美中文在线视频| 精品久久中文字幕久久av| 国产91丝袜在线播放九色| 91精品国产福利在线观看麻豆| 日韩视频网站在线观看| 成人在线观看网站| 中文av一区二区三区| 亚洲高清在线观看一区| 国产ts一区二区| 国产一区二区三区毛片| 欧美网站一区二区|