整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          網(wǎng)絡(luò)安全之從原理看懂XSS

          網(wǎng)絡(luò)安全之從原理看懂XSS

          文將介紹如何使用PHP采集文章內(nèi)容,包括采集的方法、工具和注意事項。

          1.什么是PHP采集文章內(nèi)容?

          PHP采集文章內(nèi)容指的是使用PHP編程語言從互聯(lián)網(wǎng)上獲取并提取文章的內(nèi)容。這種技術(shù)可以幫助我們自動化地獲取大量文章信息,節(jié)省時間和人力資源。

          2. PHP采集文章內(nèi)容的方法有哪些?

          -使用cURL庫:cURL是一個強大的開源網(wǎng)絡(luò)庫,可以通過HTTP協(xié)議獲取網(wǎng)頁源代碼,并從中提取所需的文章內(nèi)容。

          -使用file_get_contents()函數(shù):這個PHP內(nèi)置函數(shù)可以讀取遠程文件并返回其內(nèi)容,我們可以通過它獲取網(wǎng)頁源代碼,并進行解析提取。

          -使用第三方庫:例如Goutte、Simple HTML DOM等第三方庫提供了更加簡單和高效的方式來采集文章內(nèi)容。

          3.如何使用cURL庫進行文章內(nèi)容采集?

          使用cURL庫進行文章內(nèi)容采集需要以下步驟:

          -初始化cURL會話;

          -設(shè)置目標網(wǎng)址和其他相關(guān)參數(shù);

          -執(zhí)行cURL請求,并獲取網(wǎng)頁源代碼;

          -解析網(wǎng)頁源代碼,提取所需的文章內(nèi)容。

          4.如何使用file_get_contents()函數(shù)進行文章內(nèi)容采集?

          使用file_get_contents()函數(shù)進行文章內(nèi)容采集需要以下步驟:

          -設(shè)置目標網(wǎng)址;

          -使用file_get_contents()函數(shù)讀取網(wǎng)頁源代碼;

          -解析網(wǎng)頁源代碼,提取所需的文章內(nèi)容。

          5.采集文章內(nèi)容時需要注意什么?

          在采集文章內(nèi)容時,我們需要注意以下幾點:

          -尊重網(wǎng)站的規(guī)則和版權(quán):遵守網(wǎng)站的使用條款和版權(quán)法律,不要進行未經(jīng)授權(quán)的采集。

          -控制采集頻率:不要過于頻繁地訪問同一個網(wǎng)站,以免給服務(wù)器帶來過大的負擔。

          -處理反爬蟲機制:一些網(wǎng)站可能設(shè)置了反爬蟲機制,我們需要通過設(shè)置User-Agent、使用代理IP等方式來繞過這些限制。

          6.有哪些常用的PHP文章內(nèi)容采集工具?

          除了手動編寫代碼進行文章內(nèi)容采集外,還有一些常用的PHP文章內(nèi)容采集工具,例如:

          - PHPCrawler:一個強大的PHP爬蟲框架,可以快速實現(xiàn)文章內(nèi)容采集功能。

          - Goutte:一個簡單易用的Web爬蟲庫,可以方便地獲取網(wǎng)頁信息。

          - Simple HTML DOM:一個解析HTML文檔的庫,可以輕松提取所需的數(shù)據(jù)。

          7.采集到的文章內(nèi)容如何處理和存儲?

          采集到的文章內(nèi)容可以通過以下方式進行處理和存儲:

          -清洗數(shù)據(jù):對采集到的文章內(nèi)容進行清洗,去除HTML標簽、特殊字符等無用信息。

          -存儲數(shù)據(jù):將處理后的文章內(nèi)容存儲到數(shù)據(jù)庫中,以便后續(xù)使用和管理。

          8. PHP采集文章內(nèi)容的應(yīng)用場景有哪些?

          PHP采集文章內(nèi)容在以下場景中有廣泛的應(yīng)用:

          -網(wǎng)頁數(shù)據(jù)分析:通過采集多個網(wǎng)頁的文章內(nèi)容,進行數(shù)據(jù)分析和挖掘,發(fā)現(xiàn)其中的規(guī)律和趨勢。

          -新聞聚合平臺:通過采集各大新聞網(wǎng)站的文章內(nèi)容,構(gòu)建一個新聞聚合平臺,方便用戶獲取最新資訊。

          -內(nèi)容自動發(fā)布:通過采集其他網(wǎng)站的文章內(nèi)容,并自動發(fā)布到自己的網(wǎng)站或博客上,實現(xiàn)內(nèi)容更新和增加。

          9. PHP采集文章內(nèi)容的未來發(fā)展趨勢是什么?

          隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和創(chuàng)新,PHP采集文章內(nèi)容也將迎來更多的機遇和挑戰(zhàn)。未來發(fā)展趨勢包括:

          -智能化采集:利用機器學習和自然語言處理等技術(shù),實現(xiàn)對文章內(nèi)容的智能化采集和處理。

          -多媒體內(nèi)容采集:除了文字內(nèi)容,還可以采集圖片、視頻等多媒體內(nèi)容,提供更豐富的信息資源。

          -分布式采集系統(tǒng):通過分布式架構(gòu)和任務(wù)調(diào)度算法,實現(xiàn)對大規(guī)模網(wǎng)站的高效采集和處理。

          以上是關(guān)于PHP采集文章內(nèi)容的問答,希望對您有所幫助。如果您還有其他問題,歡迎繼續(xù)提問!

          摘要】
          集算器 SPL 支持抓取網(wǎng)頁數(shù)據(jù),根據(jù)抓取定義規(guī)則,可將網(wǎng)頁數(shù)據(jù)下載到在本地進行統(tǒng)計分析。具體定義規(guī)則要求、使用詳細情況,請前往乾學院:集算器 SPL 抓取網(wǎng)頁數(shù)據(jù)!

          網(wǎng)站上的數(shù)據(jù)源是我們進行統(tǒng)計分析的重要信息源。當我們?yōu)g覽網(wǎng)頁,看到自己感興趣數(shù)據(jù)內(nèi)容時,希望能夠快速抓取網(wǎng)頁上的數(shù)據(jù),這對于數(shù)據(jù)分析相關(guān)工作來說極其重要,也是必備的技能之一。但是網(wǎng)絡(luò)數(shù)據(jù)抓取大多需要復(fù)雜的編程知識,操作也比較繁瑣。這里介紹如何用集算器 SPL 快速抓取網(wǎng)頁數(shù)據(jù)。

          1、基本流程圖
          2、抓取網(wǎng)頁數(shù)據(jù)接口
          3、定義規(guī)則
          A、web_info
          B、init_url
          C、help_url
          D、target_url
          E、page_url
          4、抓取股票歷史數(shù)據(jù)
          5、用戶自定義程序
          A、數(shù)據(jù)提取程序接口
          B.數(shù)據(jù)保存程序接口
          C、數(shù)據(jù)提取程序樣例
          D、數(shù)據(jù)保存程序樣例
          E、自定義程序的使用

          1、基本流程圖

          從給定的開始地址進行遍歷,將解析過濾后的網(wǎng)址放入下載地址隊列,分成網(wǎng)址頁 help_url 與下載頁 target_url, 網(wǎng)址頁只收集網(wǎng)址,下載頁即能收集網(wǎng)址,也能提取數(shù)據(jù),把提取到的數(shù)據(jù)保存起來。抓取網(wǎng)頁數(shù)據(jù)直到遍歷地址為空,則抓取工作結(jié)束。

          2、抓取網(wǎng)頁數(shù)據(jù)接口
          web_crawl(jsonstr) 是抓取網(wǎng)頁數(shù)據(jù)接口,參數(shù) jsonstr 是定義規(guī)則的字符串,抓取數(shù)據(jù)時,根據(jù)定義規(guī)則遍歷 URL、下載、提取、保存相關(guān)內(nèi)容數(shù)據(jù)。
          本接口依賴集算器外部庫 webcrawlCli。它缺省安裝在集算器軟件的 esProc\extlib\webcrawlCli 路徑下,在集算器的外部庫設(shè)置中勾選 webcrawlCli 項, 重啟集算器后,就可以使用 web_crawl 接口。

          web_crawl 簡單用法,如抓取指定股票數(shù)據(jù),SPL 腳本 demo.dfx:

          獲取股票代碼 600000 的數(shù)據(jù)文件:

          文件內(nèi)容:

          3、定義規(guī)則
          根據(jù)基本流程圖,將定義規(guī)則分成網(wǎng)站信息、初始網(wǎng)址、網(wǎng)址頁、下載頁、提取數(shù)據(jù)五部分。具體內(nèi)容如下:
          [
          {web_info:{domain:‘www.banban.cn’, save_path:‘d:/tmp/data/webmagic’, thread_size:2, cookie:{name:“jacker”, laster:“2011”},
          user_agent:‘Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0’}},
          {init_url:[‘_cybs.htmlhttps://www.banban.cn/gupiao/list’, ‘_sh.htmlhttps://www.banban.cn/gupiao/list’]},
          {help_url:[‘gupiao/list_(sh|sz|cyb)\.html’, ‘/shujv/zhangting/’, ‘/agu/$’]},
          {target_url:{reg_url:‘/agu/365\d’}},
          {target_url:{filter:‘gupiao/list_(sh|sz|cyb)\.html’, reg_url:‘gupiao/[sz|sh]?(60000\d)/’,new_url:‘http://www.aigaogao.com/tools/history.html?s=%s’}},
          {page_url:{filter:‘history.html\?s=\d{6}’, extractby: “//div[@id=‘ctl16_contentdiv’]/”}},
          {page_url:{extractby: “//div[@id=‘content_all’]/”}},
          {page_url:{filter:‘/agu/365\d’, extractby: “//div[@id=‘content’]/”}}
          ]

          規(guī)則簡要說明:
          web_info:網(wǎng)站信息, 根據(jù)要下載的網(wǎng)站,設(shè)置域名、本地存儲位置、用戶代理信息、用戶自定義程序等相關(guān)的信息。
          init_url:初始網(wǎng)址, URL 遍歷的入口網(wǎng)址。
          help_url:網(wǎng)址頁, 定義網(wǎng)址頁規(guī)則,收集網(wǎng)頁內(nèi)容中的 URL,但不提取此頁面數(shù)據(jù)內(nèi)容。
          target_url:下載頁, 定義下載頁規(guī)則,收集網(wǎng)頁內(nèi)容中的 URL,同時也提取此頁面的內(nèi)容。
          page_url:提取數(shù)據(jù), 定義頁面內(nèi)容提取規(guī)則,在下載頁 target_url 中根據(jù)此規(guī)則提取內(nèi)容。

          注意: json 書寫結(jié)構(gòu)細節(jié),節(jié)點 {} 中的 [] 表示 list 列表,節(jié)點 {} 中的 {} 表示 map 鍵值結(jié)構(gòu),書定時要注意,否則書寫不對易引起解析錯誤。

          定義規(guī)則說明

          A、web_info
          設(shè)置要下載的信息,內(nèi)容包括:
          domain:設(shè)置域名。
          save_path:文件存儲路徑。
          user_agent:指用戶代理信息。 作用: 使服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
          sleep_time:抓取間隔。
          cycle_retry_times:重試次數(shù)。
          charset:設(shè)置編碼。
          use_gzip:是否為 gzip 壓縮。
          time_out:抓取超時設(shè)置。
          cookie_name:cookie 信息,鍵值結(jié)構(gòu)。
          thread_size:抓取時線程數(shù)。
          save_post:是否要為存儲的文件名稱追加編碼串,以防網(wǎng)名文件被覆蓋,缺省值為 true。如 books/a.html, music/a.html, 都是要下載的頁面,保存時若此參數(shù)為 true, 則存儲文件名分別為 a_xxxcgk.txt,a_xabcdw.txt,文件不會被覆蓋;若為 false, 保存文件名為 a.txt, 后存儲的就會將已存在的同名文件覆蓋。
          class_name:用戶自定義的存儲類。
          class_argv:傳遞給 class_name 類的字符串參數(shù)。

          B、init_url
          初始的 URL。
          為 List 列表結(jié)構(gòu),可設(shè)置多個 URL.

          C、help_url
          網(wǎng)址頁主要是定義要收集的 URL 過濾規(guī)則, 符合規(guī)則的 URL 會被加入下載網(wǎng)址隊列,但是不會提取其具體內(nèi)容。過濾規(guī)則支持正則表達式,如:
          gupiao/list_(sh|sz|cyb)\.html 表示 URL 中只有包括字符串 gupiao/list_sh.html、gupiao/list_sz.html、gupiao/list_cyb.html 鏈接才能通過。
          為 List 列表結(jié)構(gòu),可定義多個規(guī)則。

          D、target_url
          下載頁是要抓取內(nèi)容數(shù)據(jù)的 URL,需要從這個頁面里提取內(nèi)容。若此 URL 符合 help_url 過濾規(guī)則,那么也會在本頁面中收集 URL。
          約定定義規(guī)則格式:
          {target_url:{filter: pageUrl, reg_url:urlRegex, new_url:newUrl}},
          表示在符合 pageUrl 條件的頁面中,找出符合 urlRegex 條件的 href 鏈接,若 newUrl 定義了,則可與 urlRegex 過濾結(jié)果組合成新的 URL。
          例如在頁面中找到鏈接 a_100.html 符合過濾條件 reg_url=a_(\d+)\.html, 則有 newUrl=b_%s.php, 那么 urlRegex 過濾 a_100.html 的結(jié)果為 100, 將與 newUrl 合并,新的下載頁為 b_100.php。
          其中 filter 表示定義過濾的 URL 規(guī)則;若無此定義,表示所有的 target_url 都要用此規(guī)則。
          reg_url 表示要收集的 URL 規(guī)則,必寫;無 reg_url 的 target_url 規(guī)則則無意義。
          new_url 表示定義新的頁面,需要與 reg_url 過濾結(jié)果結(jié)合成新的 URL。

          舉例說明:
          3.1 定義規(guī)則:{target_url:{filter:‘gupiao/list_(sh|sz|cyb)\.html’, reg_url:‘gupiao/([sz|sh]?6000\d{2})/’,new_url:‘http://www.raqsft.com/history.html?s=%s’}}
          在下載頁 gupiao/list_sh.html 中包含如下內(nèi)容:

        1. 包鋼股份 (600010)
        2. 四川路橋 (600039)
        3. 保利地產(chǎn) (600048)
        4. A、gupiao/list_sh.html 符合 filter 條件
          B、href 串符合 reg_url 條件,將產(chǎn)生 [600010, 600039, 600048]
          C、過濾結(jié)果與 newUrl 生成新的 URL:
          http://www.raqsft.com/history.html?s=600010
          http://www.raqsft.com/history.html?s=600039
          http://www.raqsft.com/history.html?s=600048
          new_url 中的 %s 為合并字符串的占位符。

          3.2 定義規(guī)則:{target_url:{reg_url:‘/ gupiao/60001\d’}},

          在下載頁 gupiao/list.html 中包含如下內(nèi)容:

        5. 包鋼股份 (600010)
        6. 四川路橋 (600039)
        7. 保利地產(chǎn) (600048)
        8. href 中符合 reg_url 條件的,則收集到的 URL 為: http://www.xxx.com/gupiao/600010/ 其它兩個 href 不符合過濾條件。 設(shè)置 filter 是為了在過濾后的頁面中去收集 URL, 當 help_url 多時,過濾后縮小了范圍,提高了效率。 target_url 規(guī)則可定義多條,以適應(yīng)不同的條件。

          E、page_url
          提取數(shù)據(jù),主要作用于下載頁面內(nèi)容提取,它表示使用這個抽取規(guī)則,將提取到的結(jié)果保存。定義此規(guī)則參考 xpath 使用說明。它只提取主要內(nèi)容,但對內(nèi)容細節(jié)還需要 className 類來抽取。
          約定定義規(guī)則格式:
          {page_url:{filter: pageUrl, extractby: contentReg, class: className }},
          其中 filter 表示符合過濾條件的 url 規(guī)則,若無此定義,表示所有的 target_url 都要用此規(guī)則。
          extractby 表示頁面內(nèi)容提取規(guī)則。若定義 class,表示由 className 類執(zhí)行內(nèi)容提??;若 className=
          ”default”, 表示用當前缺省方式提取,也就是針對 table 表中的內(nèi)容提取數(shù)據(jù)。若缺省提取不滿足需求,用戶可自定義類來實現(xiàn),具體實現(xiàn)參考后面用戶自定義程序。
          例如:extractby :“//div[@class=news-content]/text()”,從網(wǎng)頁中提取此節(jié)點下的數(shù)據(jù)。

          page_url 可針對不同的頁面制定不同的規(guī)則。通過 filter 過濾后的頁面中去提取數(shù)據(jù),減少要處理的 URL 數(shù)量,當 target_url 多時,能提高效率。

          若無 extractby 規(guī)則,則表示提取 target_url 頁面中所有的內(nèi)容。
          若定義了多條 page_url 規(guī)則 ,則首個符合規(guī)則的內(nèi)容將被提取。
          假如 A 頁面內(nèi)容的符合規(guī)則 R1,R2,R3, 提取內(nèi)容時首先是 R2,則不再根據(jù) R1、R3 規(guī)則提取數(shù)據(jù)。
          說明:若沒有定義 target_url 規(guī)則,但當前頁面有適合的 page_url 規(guī)則,則此頁面的內(nèi)容也會被提取。

          4、抓取股票歷史數(shù)據(jù)

          下面用抓取股票歷史數(shù)據(jù)來說明,web_crawl() 接口是如何應(yīng)用的。基本操作:先獲取股票代碼,然后通過股票代碼查詢歷史數(shù)據(jù),從下載頁面中提取數(shù)據(jù)后保存。A、在https://www.banban.cn/gupiao/list_xxx.html 頁面 help_url 提取上證、深證、創(chuàng)業(yè)板的股票代碼。
          B 、將股票代碼與http://www.aigaogao.com/tools/history.html?s=%s 結(jié)合,生成需要下載網(wǎng)址 target_url.
          C 、針對下載頁 target_url 中的內(nèi)容提取。

          D、顯示提取后的內(nèi)容。

          SPL 實現(xiàn)代碼 Stock.dfx:

          加載其中的股票 600010 數(shù)據(jù)為:

          5、用戶自定義程序
          對于內(nèi)容提取,缺省提供了對 html 中的 table 內(nèi)容進行抽取。 但是世界上沒有千篇一律的網(wǎng)頁一樣,也沒有一勞永逸的提取算法。在使用網(wǎng)頁數(shù)據(jù)抓取過程中,你會碰到各種類型的網(wǎng)頁,這個時候,你就要針對這些網(wǎng)頁,來實現(xiàn)對應(yīng)抽取方法。存儲方式類似,缺省提供的是文件保存,若想其它方式如數(shù)據(jù)庫存儲,還需要用戶自己開發(fā)程序。參考下面接口,可將自定義程序融入網(wǎng)頁數(shù)據(jù)抓取流程中。

          A、數(shù)據(jù)提取程序接口

          下載頁的內(nèi)容組織形式多樣,各具不同,為了適應(yīng)更多的內(nèi)容提取需求,用戶可自定義提取數(shù)據(jù)程序。
          接口程序:
          package com.web;

          import us.codecraft.webmagic.Page;
          public interface StandPageItem {
          // 數(shù)據(jù)提取處理。
          void parse(Page p);
          }

          需要實現(xiàn) com.web.StandPageItem 接口 parse(Page p),數(shù)據(jù)提取在此實現(xiàn)。

          B、數(shù)據(jù)保存程序接口
          提取數(shù)據(jù)存儲方式種類繁多,各具不同,為了適應(yīng)更多的數(shù)據(jù)存儲需求,用戶可自定義數(shù)據(jù)存儲程序。
          接口程序:
          package com.web;
          import us.codecraft.webmagic.ResultItems;
          import us.codecraft.webmagic.Task;
          import us.codecraft.webmagic.pipeline.Pipeline;

          public interface StandPipeline extends Pipeline {
          public void setArgv(String argv);
          public void process(ResultItems paramResultItems, Task paramTask);
          }
          同樣需要實現(xiàn) com.web.StandPipeline 類中的 setArgv(), process()。
          setArgv()輸入?yún)?shù)接口,process() 處理存儲數(shù)據(jù)接口。

          C、數(shù)據(jù)提取程序樣例
          實現(xiàn) com.web.StandPage 接口 parse(Page p),
          參考代碼:
          package com.web;
          import java.util.List;
          import us.codecraft.webmagic.Page;
          import us.codecraft.webmagic.selector.Selectable;

          public class StockHistoryData implements StandPageItem{
          @Override
          public void parse(Page page) {
          StringBuilder buf=new StringBuilder();
          List nodes=page.getHtml().xpath(“table/tbody/”).nodes();
          for(Selectable node:nodes){
          String day=node.xpath(“//a/text()”).get();
          List title=node.xpath(“//a/text() | tr/td/text()”).all();
          if (title.size()<5) continue;
          String line=title.toString().replaceFirst(“, ,”, “,”);
          buf.append(line+“\n”);
          }
          page.putField(“content”, buf.toString());
          }
          }

          將要保存的數(shù)據(jù)存放到 page 的字段 "content" 中,在保存處理時,將從字段 "content" 中獲取。

          D、數(shù)據(jù)保存程序樣例
          實現(xiàn) com.web.StandPageline 類中的 setArgv(),process()
          參考代碼:
          package com.web;
          import java.io.File;
          import java.io.FileWriter;
          import java.io.IOException;
          import java.io.PrintWriter;
          import org.slf4j.Logger;
          import org.slf4j.LoggerFactory;
          import us.codecraft.webmagic.ResultItems;
          import us.codecraft.webmagic.Task;
          import org.apache.commons.codec.digest.DigestUtils;
          import us.codecraft.webmagic.utils.FilePersistentBase;
          public class StockPipeline extends FilePersistentBase implements StandPipeline {
          private Logger logger=LoggerFactory.getLogger(getClass());
          private String m_argv;
          private String m_path;
          public static String PATH_SEPERATOR=“/”;

          static {
          String property=System.getProperties().getProperty(“file.separator”);
          if (property !=null) {
          PATH_SEPERATOR=property;
          }
          }

          public StockPipeline() {
          m_path=“/data/webcrawl”;
          }
          // 獲取存儲路徑與存儲文件名前綴
          public void setArgv(String argv) {
          m_argv=argv;
          if (m_argv.indexOf(“save_path=”)>=0){
          String[] ss=m_argv.split(“,”);
          m_path=ss[0].replace(“save_path=”, ““);
          m_argv=ss[1];
          }
          }

          public void process(ResultItems resultItems, Task task) {
          String saveFile=null;
          Object o=null;
          String path=this.m_path + PATH_SEPERATOR + task.getUUID() + PATH_SEPERATOR;
          try {
          do{
          String url=resultItems.getRequest().getUrl();
          o=resultItems.get(“content”);
          if (o==null){
          break;
          }

          int start=url.lastIndexOf(”/”);
          int end=url.lastIndexOf(“?”);
          if (end<0){
          end=url.length();
          }

          String link=url.substring(start+1, end);
          if (m_argv!=null && !m_argv.isEmpty()){
          link=m_argv+“_”+link;
          }
          if (link.indexOf(“.”)>=0){
          link=link.replace(“.”, “_”);
          }
          // 加 md5Hex 為防止重名
          String hex=DigestUtils.md5Hex(resultItems.getRequest().getUrl());
          saveFile=path + link+“_”+ hex +“.json”;
          }while(false);
          if (saveFile!=null){
          PrintWriter printWriter=new PrintWriter(new FileWriter(getFile(saveFile)));
          printWriter.write(o.toString());
          printWriter.close();
          }
          } catch (IOException e) {
          logger.warn(“write file error”, e);
          }
          }
          }

          E、自定義程序的使用
          將上述接口文件及 java 文件編譯后打包成 webStock.jar 文件,放在 esProc\extlib\webcrawlCli 路徑下重啟集算器。數(shù)據(jù)存儲程序,在 web_info 中配置;數(shù)據(jù)提取程序,在 page_url 中配置。下面是加載兩個自定義類程序的 dfx 腳本。
          SPL 代碼腳本 mytest.dfx:

          生成結(jié)果:

          類似針對內(nèi)容提取或數(shù)據(jù)存儲,參考上面程序的實現(xiàn),用戶可自定義 java 程序。


          主站蜘蛛池模板: 一区二区三区在线免费 | 麻豆AV无码精品一区二区| 中文字幕一区日韩在线视频| 亚洲AV成人一区二区三区观看| 午夜福利一区二区三区在线观看 | 蜜臀AV在线播放一区二区三区| 中文字幕一区视频一线| 亚洲综合无码AV一区二区| 精品国产一区二区三区久久狼| 亚洲国产一区明星换脸| 中文字幕日韩欧美一区二区三区 | 国产免费一区二区三区不卡| 中文字幕精品无码一区二区| 亚洲毛片αv无线播放一区| 国产激情无码一区二区| 中文字幕日韩精品一区二区三区| 中文精品一区二区三区四区 | 99精品国产高清一区二区| 亚洲午夜一区二区三区| 无码人妻一区二区三区在线水卜樱| 国产精品一区二区综合| 国产视频一区二区在线播放| 国产精品视频一区二区三区经| 国产一区二区三区小向美奈子| 国产不卡视频一区二区三区| 3d动漫精品啪啪一区二区免费| 国产在线观看一区二区三区四区| 国产一区二区精品尤物| 日本免费一区二区三区最新vr| 插我一区二区在线观看| 亚洲国产精品无码第一区二区三区| 国产精品熟女视频一区二区| 一区二区在线视频| 狠狠做深爱婷婷综合一区| 日韩国产免费一区二区三区| 亚洲一区二区三区自拍公司| 精品女同一区二区三区免费播放| 无码人妻一区二区三区一| 无码乱人伦一区二区亚洲| 丰满人妻一区二区三区免费视频 | 国产精品视频一区麻豆|