亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Scrapy的GitHub數(shù)據(jù)爬蟲(chóng)

        2016-05-14 09:34:03趙本本殷旭東王偉
        電子技術(shù)與軟件工程 2016年6期
        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng)

        趙本本 殷旭東 王偉

        摘 要作為最大的社交編程及代碼托管網(wǎng)站,GitHub提供了豐富的數(shù)據(jù)來(lái)源。基于Python開(kāi)源框架Scrapy設(shè)計(jì)實(shí)現(xiàn)了一個(gè)Web爬蟲(chóng),能對(duì)GitHub的資源抓取和分析,并進(jìn)行了結(jié)構(gòu)化處理和存儲(chǔ),可為后續(xù)數(shù)據(jù)分析提供基礎(chǔ)。介紹了GitHub爬蟲(chóng)的設(shè)計(jì)原理、算法的實(shí)現(xiàn)方式,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行了分析。

        【關(guān)鍵詞】網(wǎng)絡(luò)爬蟲(chóng) 數(shù)據(jù)爬取 Scrapy GitHub Python NoSQL

        數(shù)據(jù)產(chǎn)生于各行各業(yè),在互聯(lián)網(wǎng)時(shí)代大數(shù)據(jù)概念提出后,人們發(fā)現(xiàn)自己手中的數(shù)據(jù)不再毫無(wú)用處,通過(guò)強(qiáng)大的技術(shù)手段,無(wú)形的數(shù)據(jù)可轉(zhuǎn)化為有形資產(chǎn)。麥肯錫公司的報(bào)告指出數(shù)據(jù)是一種生產(chǎn)資料,大數(shù)據(jù)是下一個(gè)創(chuàng)新、競(jìng)爭(zhēng)、生產(chǎn)力提高的前沿。 世界經(jīng)濟(jì)論壇的報(bào)告也認(rèn)定大數(shù)據(jù)為新財(cái)富,價(jià)值堪比石油。GitHub是一個(gè)巨大的數(shù)據(jù)寶庫(kù),吸引了大量的開(kāi)發(fā)人員與研究人員入駐。2014年的《GitHub中國(guó)開(kāi)發(fā)者年度報(bào)告》指出,目前 GitHub 上的注冊(cè)用戶數(shù)量已經(jīng)超過(guò)1000萬(wàn)。由于網(wǎng)站托管的開(kāi)源項(xiàng)目眾多,訪問(wèn)的流量也呈爆炸性增長(zhǎng)。要想從數(shù)千萬(wàn)程序員中快速、準(zhǔn)確地抓取所需要的信息變得越來(lái)越困難,所以必須使用自動(dòng)化工具才能較容易的抓取下來(lái)。

        本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Scrapy框架的Web數(shù)據(jù)爬蟲(chóng),從GitHub抓取大量用戶數(shù)據(jù)信息,下載到本地,進(jìn)行了結(jié)構(gòu)化處理和存儲(chǔ),為之后做數(shù)據(jù)分析提供基礎(chǔ)。

        1 網(wǎng)絡(luò)爬蟲(chóng)與Scrapy

        所謂網(wǎng)絡(luò)爬蟲(chóng),就是抓取特定網(wǎng)站網(wǎng)頁(yè)的HTML數(shù)據(jù)。網(wǎng)絡(luò)爬蟲(chóng)從一個(gè)存放URL的集合開(kāi)始進(jìn)行爬取,首先從隊(duì)列中獲取一個(gè)URL并下載此網(wǎng)頁(yè),提取該網(wǎng)頁(yè)中的其它URL并放入隊(duì)列中。此過(guò)程將重復(fù)直至關(guān)閉。常見(jiàn)的網(wǎng)絡(luò)爬蟲(chóng)及其爬行策略包括:

        (1)廣度優(yōu)先爬蟲(chóng),一般全網(wǎng)搜索引擎的網(wǎng)絡(luò)爬蟲(chóng)使用廣度優(yōu)先的爬行策略。

        (2)重新爬取已有的頁(yè)面的爬蟲(chóng),目的是獲得數(shù)據(jù)的定期更新。

        (3)聚焦爬蟲(chóng),也叫定向爬蟲(chóng),為很多垂直搜索引擎使用,采取特定的爬行策略來(lái)爬取特定類(lèi)型的網(wǎng)頁(yè)。本文所研究的正是這一類(lèi)型的網(wǎng)絡(luò)爬蟲(chóng)。例如,網(wǎng)頁(yè)上的某個(gè)特定主題或語(yǔ)言、圖像、MP3文件等。

        Scrapy是用Python開(kāi)發(fā)的一個(gè)開(kāi)源的Web爬蟲(chóng)框架,可用于快速抓取Web站點(diǎn)并從頁(yè)面中高效提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy可廣泛應(yīng)用于數(shù)據(jù)挖掘、監(jiān)測(cè)和自動(dòng)化測(cè)試等方面,提供了多種類(lèi)型爬蟲(chóng)的基類(lèi),如BaseSpider、SitemapSpider等。

        2 基于Scrapy的Github數(shù)據(jù)爬蟲(chóng)的設(shè)計(jì)

        2.1 Scrapy原理

        Scrapy是基于Twisted異步網(wǎng)絡(luò)庫(kù)來(lái)處理通訊,架構(gòu)清晰,并且包含了各種中間件接口,可以靈活的完成各種需求。其工作原理為:首先從種子URL開(kāi)始,調(diào)度器會(huì)傳給下載器進(jìn)行下載,之后會(huì)交給爬蟲(chóng)進(jìn)行分析,根據(jù)分析結(jié)果進(jìn)行不同處理。如果是需要進(jìn)一步爬取的鏈接,這些鏈接會(huì)傳回調(diào)度器;如果是需要保存的數(shù)據(jù),則被送到項(xiàng)目管道組件進(jìn)行后期處理,包括詳細(xì)分析、過(guò)濾、存儲(chǔ)等。此外,在數(shù)據(jù)流動(dòng)的通道里還允許安裝各種中間件,進(jìn)行必要的處理。

        2.2 GitHub數(shù)據(jù)爬蟲(chóng)

        2.2.1 GitHub網(wǎng)頁(yè)結(jié)構(gòu)與數(shù)據(jù)分析

        GitHub個(gè)人主頁(yè)的主要信息可分為左右兩塊:左塊為個(gè)人基本信息,右塊為個(gè)人相關(guān)的項(xiàng)目。個(gè)人基本信息包括名字、郵箱、公司、頭像等,爬取時(shí)會(huì)按照編寫(xiě)的爬蟲(chóng)規(guī)則全部保存下來(lái),同時(shí)右塊的項(xiàng)目信息也儲(chǔ)存在JSON文件中。格式為:

        {

        “_id”:

        “fullname”:

        “mail”:

        “username”:

        “organization”:

        “joined”:

        “starred”:

        }。

        2.2.2 數(shù)據(jù)定義

        Item是保存爬取到的數(shù)據(jù)容器,使用方法和Python字典類(lèi)似。根據(jù)從GitHub網(wǎng)站上獲取到的數(shù)據(jù)followers、fullname等對(duì)Item進(jìn)行統(tǒng)一建模。從而在Item中定義相應(yīng)的字段field。對(duì)應(yīng)的item.py中的主要代碼為:

        import scrapy

        class GithubItem(scrapy.Item):

        fullname = scrapy.Field()

        username = scrapy.Field()

        popular_repos = scrapy.Field()

        2.2.3 編寫(xiě)提取Item數(shù)據(jù)的Spider

        GitHubSpider是用于GitHub網(wǎng)站爬取數(shù)據(jù)的類(lèi),選擇從scrapy.Spider類(lèi)繼承。定義以下屬性和方法:

        (1)name屬性:定義spider名字的字符串且唯一;

        (2)start_urls屬性:Spider在啟動(dòng)時(shí)從url列表開(kāi)始進(jìn)行爬取。第一個(gè)被獲取到的頁(yè)面將是其中之一,后續(xù)的URL則從初始的頁(yè)面中提取;

        (3)parse:是Spider的一個(gè)方法。每個(gè)初始URL完成下載后生成的Response對(duì)象將會(huì)作為唯一的參數(shù)傳遞給該方法。該方法解析提取Item數(shù)據(jù)以及生成需要進(jìn)一步處理的URL的Request對(duì)象。

        Scrapy提取數(shù)據(jù)使用Selector選擇器機(jī)制,使用特定的XPath表達(dá)式來(lái)提取HTML網(wǎng)頁(yè)中的數(shù)據(jù)。此爬蟲(chóng)提取GitHub用戶主頁(yè)中的followers數(shù)據(jù)項(xiàng)使用代碼:

        people['followers']=response.xpath('//div[@class="vcard-stats"]/a[1]/strong[@class="vcard-stat-count"]/text()').extract();

        即提取class為vcard-stats的div標(biāo)簽內(nèi)的第一個(gè)a標(biāo)簽里的class為vcard-stat-count的strong標(biāo)簽內(nèi)的文本數(shù)據(jù)。

        2.3 數(shù)據(jù)存儲(chǔ)NoSQL

        網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)爬取的數(shù)據(jù)量大,且多為半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)并不擅長(zhǎng)這類(lèi)數(shù)據(jù)的存儲(chǔ)與處理。而NoSQL在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫(kù)無(wú)法比擬的性能優(yōu)勢(shì),因此選擇使用NoSQL數(shù)據(jù)庫(kù)存儲(chǔ)爬取到的數(shù)據(jù)。

        2.3.1 數(shù)據(jù)存儲(chǔ)方式

        MongoDB是一個(gè)基于分布式文件存儲(chǔ)的非關(guān)系型數(shù)據(jù)庫(kù),具有靈活的數(shù)據(jù)存儲(chǔ)方式。MongoDB數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu),也不存在連接操作。其次它是一種基于文檔的、無(wú)模式且不保證ACID的數(shù)據(jù)庫(kù)。每當(dāng)抓取數(shù)據(jù)到Item項(xiàng)時(shí),都會(huì)添加進(jìn)一個(gè)Mongo集合。

        2.3.2 設(shè)置數(shù)據(jù)庫(kù)

        在settings.py文件里設(shè)置MongoDB的參數(shù):服務(wù)器SERVER、端口PORT、數(shù)據(jù)庫(kù)DB、數(shù)據(jù)庫(kù)表COLLECTION,之后指定管道后添加數(shù)據(jù)庫(kù)設(shè)置:

        ITEM_PIPELINES={ 'GitHub.pipelines.MongoDBpipeline':300,}

        2.3.3 連接數(shù)據(jù)庫(kù)

        在pipelines.py文件中通過(guò)管道連接。首先定義一個(gè)函數(shù)去連接數(shù)據(jù)庫(kù):

        class MongoDBpipeline(object):

        def __init__(self):

        MongoClient(…)

        def process_item(self, item, spider):

        return item

        創(chuàng)建了一個(gè)類(lèi)MongoDBPipeline(),構(gòu)造初始函數(shù)初始化類(lèi)。process_item()函數(shù)處理被解析的數(shù)據(jù)。

        2.4 反爬蟲(chóng)技術(shù)的應(yīng)對(duì)措施

        很多網(wǎng)站為避免被爬蟲(chóng)抓取數(shù)據(jù),使用了一定的規(guī)則和特定的機(jī)制來(lái)實(shí)現(xiàn),本爬蟲(chóng)主要采取以下措施:

        (1)設(shè)置download_delay,即下載器在下載同一個(gè)網(wǎng)站下一個(gè)頁(yè)面前需要等待時(shí)間。如果下載等待時(shí)間長(zhǎng),則不能滿足短時(shí)間大規(guī)模抓取的要求;而太短則大大增加了被Ban的幾率。因此在settings.py中設(shè)置:DOWNLOAD_DELAY = 2;

        (2)禁止cookies,可以防止使用cookies識(shí)別爬蟲(chóng)軌跡的網(wǎng)站察覺(jué),在settings.py設(shè)置:COOKIES_ENABLES=False;

        (3)使用user agent池,防止被服務(wù)器識(shí)別,將user agent池寫(xiě)入rotate_useragent.py文件里。

        2.5 爬蟲(chóng)工作方式及算法

        GitHub網(wǎng)站上網(wǎng)頁(yè)數(shù)以百萬(wàn)記,且分布在全世界各個(gè)地方的服務(wù)器。對(duì)于GitHub這樣的網(wǎng)站來(lái)說(shuō),適合采取定向爬蟲(chóng)策略。即從第一個(gè)URL種子開(kāi)始,來(lái)收集所有的用戶信息和可以利用的用戶URL并保存起來(lái),之后遍歷整個(gè)URL集合。

        GitHub爬蟲(chóng)采取寬度優(yōu)先遍歷策略,其基本思路是將新下載網(wǎng)頁(yè)中發(fā)現(xiàn)的鏈接直接插入待抓取URL隊(duì)列。也就是指網(wǎng)絡(luò)爬蟲(chóng)會(huì)先抓取起始網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè),然后再選擇其中的一個(gè)鏈接網(wǎng)頁(yè),繼續(xù)抓取在此網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè)。

        (1)首先由圖開(kāi)始從用戶URL種子進(jìn)行爬取,即用戶主頁(yè)面。然后通過(guò)爬蟲(chóng)將網(wǎng)頁(yè)中個(gè)人信息提取出來(lái)并分別存儲(chǔ)到每個(gè)人新創(chuàng)建在本地的文檔中。

        (2)通過(guò)判斷用戶的關(guān)注者即是否等于0而繼續(xù)循環(huán)爬行還是重新爬行,不為0時(shí)會(huì)保存每一個(gè)被關(guān)注者的鏈接到URL隊(duì)列里面,方便繼續(xù)循環(huán)。

        (3)循環(huán)爬取時(shí)會(huì)保存每一個(gè)用戶的關(guān)注頁(yè)面,因?yàn)槿绻h(huán)完用戶之后,還有個(gè)他的關(guān)注者URL頁(yè)面沒(méi)用到,進(jìn)入關(guān)注頁(yè)面會(huì)有重新一批用戶,然后再添加入循環(huán)。

        (4)關(guān)注者與被關(guān)注者難免會(huì)互相關(guān)注,所以爬取時(shí)會(huì)重復(fù)爬取,但不會(huì)重復(fù)下載信息。

        爬蟲(chóng)算法用偽代碼描述如下:

        Begin

        init

        name←github

        headers←{Accpet,User-Agent,..}

        allowed_domains←github.com

        start_url←["https://github.com/someone",]

        return A

        A people←Github_Item()

        people←response.xpath(“//...”)

        Save as TXT. call B(self,response)

        B Store as followers_urls、people_urls_list

        Duplicates_Removal followers_urls、people_urls_list

        people_link_1←people_urls_list[0]

        people_urls_list.remove(people_link_1)

        call C(people_link_1)

        C Count followers

        IF followers≠0 THEN

        followers_urls.append(url)

        call A(url);

        ELSE

        IF followers_urls ≠ [] THEN

        followers_link_1←followers_urls[0]

        followers_urls.remove(followers_link_1)

        call A(followers_link_1);

        ELSE

        people_link_1←people_urls_list[0]

        people_urls_list.remove(people_link_1)

        call A(people_link_1)

        END IF

        END IF

        END

        3 實(shí)驗(yàn)與分析

        3.1 實(shí)驗(yàn)結(jié)果

        對(duì)以上的爬蟲(chóng)進(jìn)行python代碼的編寫(xiě),啟動(dòng)運(yùn)行scrapy crawl github -s LOG_FILE=scrapy.log,下面是部分?jǐn)?shù)據(jù)的展示。圖2展示了用戶個(gè)人信息保存在文本文件中的數(shù)據(jù),圖3為MongoDB數(shù)據(jù)庫(kù)內(nèi)存儲(chǔ)的數(shù)據(jù),可用于統(tǒng)計(jì)分析查詢。

        3.2 實(shí)驗(yàn)分析

        實(shí)驗(yàn)環(huán)境使用一臺(tái)PC機(jī)運(yùn)行爬蟲(chóng)程序,并且同時(shí)運(yùn)行數(shù)據(jù)存儲(chǔ)服務(wù)器。實(shí)驗(yàn)測(cè)試中,臨時(shí)暫停發(fā)現(xiàn)共爬取了221次(有重復(fù)),保存了152人,URL隊(duì)列中還有623條個(gè)人主頁(yè)沒(méi)爬取。沒(méi)有發(fā)現(xiàn) Crawled (429)(太多請(qǐng)求)等警告信息。

        爬取會(huì)時(shí)不時(shí)的停頓,有時(shí)出現(xiàn)twisted.python.failure.Failure錯(cuò)誤。仔細(xì)分析記錄文件scrapy.log,發(fā)現(xiàn)是在下載圖片時(shí)變慢的。原因是Scrapy使用了twisted作為異步網(wǎng)絡(luò)庫(kù)來(lái)處理網(wǎng)絡(luò)通訊。當(dāng)下載緩慢時(shí),twisted異步請(qǐng)求發(fā)生錯(cuò)誤,出現(xiàn)一系列的錯(cuò)誤回調(diào)(errback)或者錯(cuò)誤回調(diào)鏈(errback chain),錯(cuò)誤會(huì)傳遞給下一個(gè)errback,errback不返回任何數(shù)據(jù)。而twisted的Deferred對(duì)象會(huì)使回調(diào)函數(shù)把None作為參數(shù)返回,從而導(dǎo)致出錯(cuò)。

        根據(jù)爬取的信息得到表1所示的測(cè)試結(jié)果表。

        根據(jù)表1可得到圖4所示的柱狀圖,在爬取1小時(shí)內(nèi)可以明顯的看出網(wǎng)速一般與網(wǎng)速較好時(shí)的差異,網(wǎng)速較好有一定的提升了爬蟲(chóng)的速度以及下載的數(shù)量。

        為了觀察網(wǎng)速對(duì)實(shí)驗(yàn)測(cè)試產(chǎn)生的影響,下面針對(duì)GitHub網(wǎng)站的爬取測(cè)試定在早晨6-7點(diǎn)鐘(6MB/S)左右進(jìn)行測(cè)試,得到表2所示的結(jié)果。

        圖5是根據(jù)表1與表2制成的柱狀圖,可以直觀的看出網(wǎng)速在很好(6MB/S)的情況下,1小時(shí)內(nèi)爬蟲(chóng)的速度與下載的信息數(shù)據(jù)比網(wǎng)速一般、較好時(shí)產(chǎn)生的數(shù)據(jù)多。為保證數(shù)據(jù)的準(zhǔn)確性,上述測(cè)試前后進(jìn)行了30余次,取平均值。

        綜上,可以得出網(wǎng)速與爬蟲(chóng)爬取的信息數(shù)量的快慢有關(guān),但是下載的用戶信息數(shù)量與爬取用戶(有重復(fù))的比率是差不多的,從開(kāi)始的51%左右到1小時(shí)內(nèi)下降至39%下載率。這也跟每個(gè)人的關(guān)注度有關(guān),若兩人互相關(guān)注,重復(fù)的抓取下來(lái)分析發(fā)現(xiàn)有的已經(jīng)下載好了,當(dāng)然這是不可避免的。

        4 結(jié)語(yǔ)

        基于Python的Scrapy框架設(shè)計(jì)并實(shí)現(xiàn)了GitHub爬蟲(chóng),從技術(shù)上為一些數(shù)據(jù)研究們提供了方便的網(wǎng)絡(luò)上數(shù)據(jù)獲取方法。主要特點(diǎn):

        (1)使用方便,只需提供一個(gè)用戶的主頁(yè)面URL就能利用本文爬蟲(chóng)抓取GitHub網(wǎng)站中大規(guī)模用戶信息;

        (2)支持?jǐn)?shù)據(jù)庫(kù),所有抓取的信息都保存到MongoDB數(shù)據(jù)庫(kù)中,利于統(tǒng)計(jì)查詢;

        (3)支持大范圍地爬取用戶信息,從一個(gè)用戶的URL可得到多個(gè)關(guān)聯(lián)用戶的URL從而衍生出大量用戶;

        (4)圖形界面操縱方便。當(dāng)所有的數(shù)據(jù)都爬取下來(lái)時(shí),可以下載任何用戶的熱門(mén)項(xiàng)目。

        本GitHub爬蟲(chóng)在處理重復(fù)爬取用戶信息方面,采取了按名字判斷的方法,使重復(fù)爬取的次數(shù)得以明顯減少,但是抓取下來(lái)的用戶信息也隨之減少了,該問(wèn)題尚須進(jìn)一步探索和改進(jìn)。

        (通訊作者:殷旭東)

        參考文獻(xiàn)

        [1]鄔賀銓.大數(shù)據(jù)時(shí)代的機(jī)遇與挑戰(zhàn)[J]. 中國(guó)經(jīng)貿(mào),2013(7):32-32.

        [2]GitHub中國(guó)開(kāi)發(fā)者年度報(bào)告{2014}[EB/OL].[2015-02-03] http://githuber.info/Report.

        [3]Manning爬蟲(chóng)技術(shù)淺析[EB/OL].http://drops.wooyun.org/tips/3915.

        [4]趙鵬程.分布式書(shū)籍網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西南交通大學(xué),2014.

        [5]趙志.基于NoSQL的BRS系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海交通大學(xué),2013.

        [6]Scrapy研究探索(七)——如何防止被ban之策略大集合[EB/OL].[2014-06-29] http://blog.csdn.net/u012150179/article/details/35774323.

        [7]黃聰,李格人,羅楚.大數(shù)據(jù)時(shí)代下爬蟲(chóng)技術(shù)的興起[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2013(17):79-80.

        [8]Twisted 15.4.0 documentation[EB/OL]. http://twistedmatrix.com/documents/current/core/howto/defer.html.

        作者簡(jiǎn)介

        趙本本(1995-),男,常熟理工學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院本科在讀學(xué)生。

        殷旭東(1970-),男,碩士學(xué)位?,F(xiàn)為常熟理工學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院工程師。CCF會(huì)員。主要研究方向?yàn)橐苿?dòng)計(jì)算、信息安全。

        王偉(1987-),男,碩士學(xué)位。現(xiàn)為蘇州市浪潮電子信息有限公司工程師。主要研究方向?yàn)樾畔踩?、大?shù)據(jù)。

        作者單位

        1.常熟理工學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院 江蘇省常熟市 215500

        2.蘇州市浪潮電子信息有限公司 江蘇省蘇州市 215002

        猜你喜歡
        網(wǎng)絡(luò)爬蟲(chóng)
        煉鐵廠鐵量網(wǎng)頁(yè)數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁(yè)挖掘研究
        主題搜索引擎中網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)研究
        淺析如何應(yīng)對(duì)網(wǎng)絡(luò)爬蟲(chóng)流量
        網(wǎng)絡(luò)爬蟲(chóng)針對(duì)“反爬”網(wǎng)站的爬取策略研究
        欧美第一黄网免费网站| 加勒比婷婷色综合久久| 亚洲综合网国产精品一区| 亚洲国产一区二区三区精品| 日韩综合无码一区二区| 人妻少妇无码精品视频区| 欲色天天网综合久久| 国产主播福利一区二区| 亚洲国产一区久久yourpan| 国产激情视频在线观看首页 | 日韩欧美国产亚洲中文| 97超碰中文字幕久久| 人妖一区二区三区四区| 国产无人区码一码二码三mba| 亚洲电影一区二区三区| 亚洲国产免费公开在线视频| 中文字幕一区二区三区四区| 天天躁夜夜躁av天天爽| 无码国产一区二区三区四区| 久久精品成人免费观看97| 91精品国产乱码久久久| 蜜桃av中文字幕在线观看| 久久婷婷五月综合色奶水99啪| 久久国产精品-国产精品| 香蕉视频免费在线| 精品少妇人妻久久免费| 免费人成视网站在线剧情| 日本另类αv欧美另类aⅴ| 国产成人无码一区二区在线观看| 亚洲成a∨人片在线观看无码| 视频一区二区三区国产| 凌辱人妻中文字幕一区| 青草视频在线播放| 亚洲手机国产精品| 国内精品国产三级国产avx| 中文字幕中文字幕在线中二区| a级毛片无码久久精品免费| 欧美一片二片午夜福利在线快| 亚洲成av人片在线天堂无| 中文字幕人成人乱码亚洲av| 自愉自愉产区二十四区|