日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python爬蟲 requests-html的使用

瀏覽:26日期:2022-07-03 17:13:12
一 介紹

Python上有一個非常著名的HTTP庫——requests,相信大家都聽說過,用過的人都說非常爽!現(xiàn)在requests庫的作者又發(fā)布了一個新庫,叫做requests-html,看名字也能猜出來,這是一個解析HTML的庫,具備requests的功能以外,還新增了一些更加強大的功能,用起來比requests更爽!接下來我們來介紹一下它吧。

# 官網(wǎng)解釋’’’This library intends to make parsing HTML (e.g. scraping the web) as simple and intuitive as possible.If you’re interested in financially supporting Kenneth Reitz open source, consider visiting this link. Your support helps tremendously with sustainability of motivation, as Open Source is no longer part of my day job.When using this library you automatically get:Full JavaScript support!CSS Selectors (a.k.a jQuery-style, thanks to PyQuery).XPath Selectors, for the faint at heart.Mocked user-agent (like a real web browser).Automatic following of redirects.Connection?pooling and cookie persistence.The Requests experience you know and love, with magical parsing abilities.Async Support’’’

官網(wǎng)告訴我們,它比原來的requests模塊更加強大,并且為我們提供了一些新的功能!

支持JavaScript 支持CSS選擇器(又名jQuery風(fēng)格, 感謝PyQuery) 支持Xpath選擇器 可自定義模擬User-Agent(模擬得更像真正的web瀏覽器) 自動追蹤重定向 連接池與cookie持久化 支持異步請求二 安裝

安裝requests-html非常簡單,一行命令即可做到。需要注意一點就是,requests-html只支持Python 3.6或以上的版本,所以使用老版本的Python的同學(xué)需要更新一下Python版本了。

# pip3 install requests-html三 如何使用requests-html?

在我們學(xué)爬蟲程序的時候用得最多的請求庫就是requests與urllib,但問題是這些包只給我們提供了如何去目標站點發(fā)送請求,然后獲取響應(yīng)數(shù)據(jù),接著再利用bs4或xpath解析庫才能提取我們需要的數(shù)據(jù)。

以往爬蟲的請求與解析

import requestsfrom bs4 import BeautifulSoupurl = ’http://www.zuihaodaxue.cn/’HEADERS = {’User-Agent’: ’Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36’}response = requests.get(url, headers=HEADERS)response.encoding = ’gbk’# print(response.status_code) print(response.text)soup = BeautifulSoup(response.text, ’lxml’)# 獲取最新的五則新聞post_rankings = soup.find_all(name=’article’, attrs={'class': 'post_ranking'})# 循環(huán)打印新聞簡介內(nèi)容for post_ranking in post_rankings:new = post_ranking.find(name=’div’, attrs={'class': ’post_summary’})print(new.text)

而在requests-html里面只需要一步就可以完成而且可以直接進行js渲染!requests的作者Kenneth Reitz 開發(fā)的requests-html 爬蟲包 是基于現(xiàn)有的框架 PyQuery、Requests、lxml、beautifulsoup4等庫進行了二次封裝,作者將Requests的簡單,便捷,強大又做了一次升級。

requests-html和其他解析HTML庫最大的不同點在于HTML解析庫一般都是專用的,所以我們需要用另一個HTTP庫先把網(wǎng)頁下載下來,然后傳給那些HTML解析庫。而requests-html自帶了這個功能,所以在爬取網(wǎng)頁等方面非常方便。

1、基本使用

from requests_html import HTMLSession# 獲取請求對象session = HTMLSession()# 往新浪新聞主頁發(fā)送get請求sina = session.get(’https://news.sina.com.cn/’)# print(sina.status_code)sina.encoding = ’utf-8’# 獲取響應(yīng)文本信息,與requests無區(qū)別 print(sina.text)

2、獲取鏈接(links與abolute_links)

links返回的結(jié)果

python爬蟲 requests-html的使用

absolute_links返回的結(jié)果

python爬蟲 requests-html的使用

from requests_html import HTMLSession# 獲取請求對象session = HTMLSession()# 往京東主頁發(fā)送get請求jd = session.get(’https://jd.com/’)# 得到京東主頁所有的鏈接,返回的是一個set集合print(jd.html.links)print(’*’ * 1000)# 若獲取的鏈接中有相對路徑,我們還可以通過absolute_links獲取所有絕對鏈接print(jd.html.absolute_links)

3、CSS選擇器與XPATH

request-html支持CSS選擇器和XPATH兩種語法來選取HTML元素。首先先來看看CSS選擇器語法,它需要使用HTML的find函數(shù)來查找元素。

’’’CSS選擇器 and XPATH 1.通過css選擇器選取一個Element對象 2.獲取一個Element對象內(nèi)的文本內(nèi)容 3.獲取一個Element對象的所有attributes 4.渲染出一個Element對象的HTML內(nèi)容 5.獲取Element對象內(nèi)的特定子Element對象,返回列表 6.在獲取的頁面中通過search查找文本 7.支持XPath 8.獲取到只包含某些文本的Element對象’’’

from requests_html import HTMLSessionsession = HTMLSession()url = 'https://www.qiushibaike.com/text/'# 獲取響應(yīng)數(shù)據(jù)對象obj = session.get(url)# 1.通過css選擇器選取一個Element對象 獲取id為content-left的div標簽,并且返回一個對象content = obj.html.find(’div#content-left’, first=True)# 2.獲取一個Element對象內(nèi)的文本內(nèi)容 獲取content內(nèi)所有文本print(content.text)# 3.獲取一個Element對象的所有attributes 獲取content內(nèi)所有屬性print(content.attrs)# 4.渲染出一個Element對象的完整的HTML內(nèi)容html = content.htmlprint(html)# 5.獲取Element對象內(nèi)的指定的所有子Element對象,返回列表a_s = content.find(’a’)print(a_s)print(len(a_s)) # 79# 循環(huán)所有的a標簽for a in a_s:# 獲取a標簽內(nèi)所有屬性的href屬性 并拼接href = a.attrs[’href’]if href.startswith(’/’):url = ’https://www.qiushibaike.com’ + hrefprint(url)# 6.在獲取的頁面中通過search查找文本 {}大括號相當(dāng)于正則的從頭到后開始匹配,獲取當(dāng)中想要獲取的數(shù)據(jù)text = obj.html.search(’把{}夾’)[0] # 獲取從 '把' 到 '夾' 字的所有內(nèi)容text = obj.html.search(’把糗事{}夾’)[0] # 獲取從把子到夾字的所有內(nèi)容print(text)print(’*’ * 1000)# 7.支持XPatha_s = obj.html.xpath(’//a’) # 獲取html內(nèi)所有的a標簽for a in a_s:href = a.attrs[’href’]#若是//開頭的url都扔掉if href.startswith(’continue#若是/開頭的都是相對路徑) elif href.startswith(’/’) print(’https://www.qiushibaike.com’+href)# 8.獲取到只包含某些文本的Element對象(containing) 獲取所有文本內(nèi)容為幽默笑話大全_爆笑笑話_笑破你的肚子的搞笑段子 - 糗事百科 title標簽 注意: 文本內(nèi)有空格也必須把空格帶上title = obj.html.find(’title’, containing=’幽默笑話大全_爆笑笑話_笑破你的肚子的搞笑段子 - 糗事百科’)print(title)四支持JavaScript

支持JavaScript是我覺得作者更新后最為牛逼的一個地方,但是需要在第一次執(zhí)行render的時候下載chromeium,然后通過它來執(zhí)行js代碼。

1、render的使用

from requests_html import HTMLSessionsession = HTMLSession()url = ’http://www.win4000.com/’obj = session.get(url)obj.encoding = ’utf-8’obj.html.render()

注意:第一次運行render()方法時,它會將Chromium下載到您的主目錄中(例如~/.pyppeteer/)。這種情況只發(fā)生一次。

2、 下載Chromeium問題

因為是從國外的站點下載幾分鐘才3%,實在是太慢了。所以我們需要通過國內(nèi)的鏡像去下載!需要做以下幾步:

手動下載Chrome

先去國內(nèi)源下載自己需要的版本,地址:https://npm.taobao.org/mirrors/chromium-browser-snapshots/

python爬蟲 requests-html的使用

修改chromeium_downloader.py文件

下載后之后解壓后,進入python安裝目錄下的Libsite-packagespyppeteer目錄, 并打開chromium_downloader.py文件。

# 找到自己的操作系統(tǒng)相應(yīng)的配置位置’’’chromiumExecutable = {’linux’: DOWNLOADS_FOLDER / REVISION / ’chrome-linux’ / ’chrome’,’mac’: (DOWNLOADS_FOLDER / REVISION / ’chrome-mac’ / ’Chromium.app’ /’Contents’ / ’MacOS’ / ’Chromium’),’win32’: DOWNLOADS_FOLDER / REVISION / ’chrome-win32’ / ’chrome.exe’,’win64’: DOWNLOADS_FOLDER / REVISION / ’chrome-win32’ / ’chrome.exe’,}’’’from pyppeteer import __chromium_revision__, __pyppeteer_home__DOWNLOADS_FOLDER = Path(pyppeteer_home) / ’local-chromium’REVISION = os.environ.get(’PYPPETEER_CHROMIUM_REVISION’, chromium_revision)# 打印這兩個變量可以知道執(zhí)行的驅(qū)動具體位置print(DOWNLOADS_FOLDER)print(REVISION)’’’由上面可以知道:chromium路徑是:C:UsersRayAppDataLocalpyppeteerpyppeteerlocal-chromium575458chrome-win32chrome.exe所以自己建文件夾,然后一直到chrome-win32文件夾,把上面下載的chromium文件,拷貝到此目錄下’’’五 自定義User-Agent

有些網(wǎng)站會使用User-Agent來識別客戶端類型,有時候需要偽造UA來實現(xiàn)某些操作。如果查看文檔的話會發(fā)現(xiàn)HTMLSession上的很多請求方法都有一個額外的參數(shù)**kwargs,這個參數(shù)用來向底層的請求傳遞額外參數(shù)。我們先向網(wǎng)站發(fā)送一個請求,看看返回的網(wǎng)站信息。

from requests_html import HTMLSession# pprint可以把數(shù)據(jù)打印得更整齊from pprint import pprintimport jsonget_url = ’http://httpbin.org/get’session = HTMLSession()# 返回的是當(dāng)前系統(tǒng)的headers信息res = session.get(get_url)pprint(json.loads(res.html.html))# 可以在發(fā)送請求的時候更換user-agentua = ’Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0’post_url = ’http://httpbin.org/get’res = session.get(post_url, headers={’user-agent’: ua})pprint(json.loads(res.html.html))# 如果你有需要可以在header中修改其他參數(shù)。六 模擬表單提交(POST)

HTMLSession封裝了一整套的HTTP方法,包括get、post、delete等, 對應(yīng)HTTP中各個方法。

# 表單登錄r = session.post(’http://httpbin.org/post’, data={’username’: ’tank_jam’, ’password’: ’tank9527’})pprint(json.loads(r.html.html))’’’ # 打印結(jié)果{’args’: {}, ’data’: ’’, ’files’: {}, ’form’: {’password’: ’tank9527’, ’username’: ’tank_jam’}, ’headers’: {’Accept’: ’*/*’, ’Accept-Encoding’: ’gzip, deflate’, ’Content-Length’: ’35’, ’Content-Type’: ’application/x-www-form-urlencoded’, ’Host’: ’httpbin.org’, ’User-Agent’: ’Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) ’ ’AppleWebKit/603.3.8 (KHTML, like Gecko) ’ ’Version/10.1.2 Safari/603.3.8’}, ’json’: None, ’origin’: ’112.65.61.109, 112.65.61.109’, ’url’: ’https://httpbin.org/post’}’’’七 支持異步請求

requests-html內(nèi)部就封裝好了aynsc異步請求的功能,可以提高我們的爬蟲效率。

from requests_html import AsyncHTMLSessionfrom requests_html import HTMLSessionimport time# 使用異步發(fā)送請求async_session = AsyncHTMLSession()async def get_baidu():url = ’https://www.baidu.com/’res = await async_session.get(url)print(res.html.absolute_links)async def get_sougou():url = ’https://www.sogou.com/’res = await async_session.get(url)print(res.html.links)start_time = time.time()async_session.run(get_baidu, get_sougou)print(’耗時:’, time.time() - start_time)# 同步發(fā)送請求session = HTMLSession()start_time = time.time()res = session.get(’https://www.baidu.com/’)print(res.html.links)res = session.get(’https://www.sogou.com/’)print(res.html.absolute_links)print(’耗時:’, time.time() - start_time)

1. 開始

Python 中可以進行網(wǎng)頁解析的庫有很多,常見的有 BeautifulSoup 和 lxml 等。在網(wǎng)上玩爬蟲的文章通常都是介紹 BeautifulSoup 這個庫,我平常也是常用這個庫,最近用 Xpath 用得比較多,使用 BeautifulSoup 就不大習(xí)慣,很久之前就知道 Reitz 大神出了一個叫 Requests-HTML 的庫,一直沒有興趣看,這回可算歹著機會用一下了。

使用 pip install requests-html安裝,上手和 Reitz 的其他庫一樣,輕松簡單:

from requests_html import HTMLSession session = HTMLSession() ​ r = session.get(’https://www.python.org/jobs/’)

這個庫是在 requests 庫上實現(xiàn)的,r 得到的結(jié)果是 Response 對象下面的一個子類,多個一個 html 的屬性。所以 requests 庫的響應(yīng)對象可以進行什么操作,這個 r 也都可以。如果需要解析網(wǎng)頁,直接獲取響應(yīng)對象的 html 屬性:

r.html

2. 原理

不得不膜拜 Reitz 大神太會組裝技術(shù)了。實際上 HTMLSession 是繼承自 requests.Session 這個核心類,然后將 requests.Session 類里的 requests 方法改寫,返回自己的一個 HTMLResponse 對象,這個類又是繼承自 requests.Response,只是多加了一個 _from_response 的方法來構(gòu)造實例:

class HTMLSession(requests.Session): # 重寫 request 方法,返回 HTMLResponse 構(gòu)造 def request(self, *args, **kwargs) -> HTMLResponse: r = super(HTMLSession, self).request(*args, **kwargs) return HTMLResponse._from_response(r, self)

class HTMLResponse(requests.Response): # 構(gòu)造器 @classmethod def _from_response(cls, response, session: Union[’HTMLSession’, ’AsyncHTMLSession’]): html_r = cls(session=session) html_r.__dict__.update(response.__dict__) return html_r

之后在 HTMLResponse 里定義屬性方法 html,就可以通過 html 屬性訪問了,實現(xiàn)也就是組裝 PyQuery 來干。核心的解析類也大多是使用 PyQuery 和 lxml 來做解析,簡化了名稱,挺討巧的。

3. 元素定位

元素定位可以選擇兩種方式:

css 選擇器

css選擇器 xpath

# css 獲取有多少個職位 jobs = r.html.find('h1.call-to-action') # xpath 獲取 jobs = r.html.xpath('//h1[@class=’call-to-action’]')

方法名非常簡單,符合 Python 優(yōu)雅的風(fēng)格,這里不妨對這兩種方式簡單的說明:

4. CSS 簡單規(guī)則

標簽名 h1 id 使用 #id 表示 class 使用 .class_name 表示 謂語表示:h1[prop=value]

5. Xpath簡單規(guī)則

路徑 // 或者 / 標簽名 謂語 [@prop=value] 軸定位 名稱::元素名[謂語]

定位到元素以后勢必要獲取元素里面的內(nèi)容和屬性相關(guān)數(shù)據(jù),獲取文本:

jobs.text jobs.full_text

獲取元素的屬性:

attrs = jobs.attrs value = attrs.get('key')

還可以通過模式來匹配對應(yīng)的內(nèi)容:

## 找某些內(nèi)容匹配 r.html.search('Python {}') r.html.search_all()

這個功能看起來比較雞肋,可以深入研究優(yōu)化一下,說不定能在 github 上混個提交。

6. 人性化操作

除了一些基礎(chǔ)操作,這個庫還提供了一些人性化的操作。比如一鍵獲取網(wǎng)頁的所有超鏈接,這對于整站爬蟲應(yīng)該是個福音,URL 管理比較方便:

r.html.absolute_links r.html.links

內(nèi)容頁面通常都是分頁的,一次抓取不了太多,這個庫可以獲取分頁信息:

print(r.html) # 比較一下 for url in r.html: print(url) ​

結(jié)果如下:

# print(r.html) <HTML url=’https://www.python.org/jobs/’> # for <HTML url=’https://www.python.org/jobs/’> <HTML url=’https://www.python.org/jobs/?page=2’> <HTML url=’https://www.python.org/jobs/?page=3’> <HTML url=’https://www.python.org/jobs/?page=4’> <HTML url=’https://www.python.org/jobs/?page=5’>

通過迭代器實現(xiàn)了智能發(fā)現(xiàn)分頁,這個迭代器里面會用一個叫 _next 的方法,貼一段源碼感受下:

def get_next(): candidates = self.find(’a’, containing=next_symbol) ​ for candidate in candidates: if candidate.attrs.get(’href’): # Support ’next’ rel (e.g. reddit). if ’next’ in candidate.attrs.get(’rel’, []): return candidate.attrs[’href’]

通過查找 a 標簽里面是否含有指定的文本來判斷是不是有下一頁,通常我們的下一頁都會通過 下一頁 或者 加載更多 來引導(dǎo),他就是利用這個標志來進行判斷。默認的以列表形式存在全局:[’next’, ’more’, ’older’]。我個人認為這種方式非常不靈活,幾乎沒有擴展性。感興趣的可以往 github 上提交代碼優(yōu)化。

7. 加載 js

也許是考慮到了現(xiàn)在 js 的一些異步加載,這個庫支持 js 運行時,官方說明如下:

Reloads the response in Chromium, and replaces HTML contentwith an updated version, with JavaScript executed.

使用非常簡單,直接調(diào)用以下方法:

r.html.render()

第一次使用的時候會下載 Chromium,不過國內(nèi)你懂的,自己想辦法去下吧,就不要等它自己下載了。render 函數(shù)可以使用 js 腳本來操作頁面,滾動操作單獨做了參數(shù)。這對于上拉加載等新式頁面是非常友好的。

8. 總結(jié)

Reitz 大神設(shè)計出來的東西還是一如既往的簡單好用,自己不多做,大多用別人的東西組裝,簡化 api。真是夠人性。不過有的地方還是優(yōu)化空間,希望有興趣和精力的童鞋去 github 上關(guān)注一下這個項目。

到此這篇關(guān)于python爬蟲 requests-html的使用的文章就介紹到這了,更多相關(guān)python requests-html內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲激情社区| 大香伊人久久精品一区二区| 国产在线看片免费视频在线观看| 久久激情五月激情| 国产激情精品一区二区三区| 欧美交a欧美精品喷水| 欧美91在线|欧美| 国产探花一区二区| 欧美一区精品| 国产精品亚洲欧美一级在线| 国产精品久久久久77777丨| 国产欧美一区二区三区精品观看| 日韩精品一区二区三区av | 香蕉精品久久| 午夜国产一区二区| 一区二区三区四区日韩| 91精品麻豆| 欧美黄页在线免费观看| 国产精品二区不卡| 久久高清免费| 国产亚洲综合精品| 日本久久一区| 开心激情综合| 久久久久蜜桃| 亚洲永久精品唐人导航网址| 国产精品伊人| 午夜av不卡| 午夜久久中文| 911亚洲精品| 色黄视频在线观看| 伊人久久成人| 老牛国内精品亚洲成av人片| 一区免费在线| 香蕉精品久久| 国产高清不卡| 国产女优一区| 国产欧美日韩一区二区三区在线| 欧美精品aa| 桃色av一区二区| 久久香蕉精品| 麻豆国产精品一区二区三区| 久久久久久免费视频| 日韩精品一级中文字幕精品视频免费观看| 久久国产影院| 中文字幕在线视频久| 欧美日韩激情| 国产视频一区二区在线播放| 久久久久久久久99精品大| 天堂va在线高清一区| 91视频精品| 99在线观看免费视频精品观看| 日韩国产高清在线| 欧美精品资源| 久久国产三级| 99精品视频在线| 婷婷视频一区二区三区| 最新中文字幕在线播放 | 国产日韩一区二区三区在线播放| 日韩大片在线播放| 日韩高清三区| 欧美不卡高清| 国产在线日韩精品| 午夜性色一区二区三区免费视频| 国产一区丝袜| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品最新| 麻豆成人在线| 国产一区2区在线观看| 日韩免费精品| 综合亚洲视频| 国内在线观看一区二区三区| 99视频精品全国免费| 亚洲精品系列| 成人精品国产亚洲| 久久精品 人人爱| 捆绑调教日本一区二区三区| 日韩一区二区久久| 精品久久久亚洲| 亚洲作爱视频| 国产一区二区三区国产精品| 日韩精品免费一区二区夜夜嗨| 99免费精品| 精品中国亚洲| 日本一区二区三区视频在线看| 人人香蕉久久| 高潮久久久久久久久久久久久久| 亚洲在线久久| 亚洲欧美伊人| 亚洲va中文在线播放免费| 69堂精品视频在线播放| 亚洲欧美不卡| 国产一区观看| 高清日韩中文字幕| 欧美精品福利| 中文字幕成人| 久久先锋影音| 亚洲激情黄色| 欧美午夜不卡| 国产一区清纯| 久久中文字幕二区| 日韩在线观看不卡| 中文在线免费视频| 福利一区在线| 都市激情国产精品| 精品中文在线| 精品一区视频| 六月丁香综合在线视频| 免费观看亚洲天堂| 国产精品一区二区三区av| 欧美一区三区| av免费不卡国产观看| 日韩精品一区第一页| 欧美aa一级| 不卡一二三区| 亚洲一级少妇| 天堂av在线| 中文日韩欧美| 欧美日韩国产亚洲一区| 喷白浆一区二区| 999久久久亚洲| 国产suv精品一区二区四区视频| 国产日韩欧美在线播放不卡| 亚洲区国产区| 日韩黄色av| 丝袜亚洲另类欧美| 亚洲主播在线| 蜜臀精品久久久久久蜜臀| 亚洲欧美激情诱惑| 蜜臀av在线播放一区二区三区| 亚洲一区网站| 一区二区国产在线| 日韩专区视频网站| 免费观看日韩电影| 亚洲97av| 国产精品主播在线观看| 麻豆视频观看网址久久| 国产一区2区在线观看| 日韩一区自拍| 性欧美69xoxoxoxo| 国产亚洲精品久久久久婷婷瑜伽| 免费日韩av片| 青青草国产成人99久久| 久久免费视频66| 国产成人精品三级高清久久91 | 国产精品香蕉| 精品一区二区三区在线观看视频 | 欧美一区二区三区高清视频| 亚洲一区日韩| 欧美日韩亚洲一区三区| 麻豆免费精品视频| 国产一区二区色噜噜| 亚洲精品免费观看| 国产亚洲网站| 1024精品久久久久久久久| 在线精品国产亚洲| 波多视频一区| 麻豆91在线播放| 日韩精品乱码av一区二区| 亚洲一区激情| 狠狠色狠狠色综合日日tαg| 国产中文字幕一区二区三区| 视频在线观看91| 国产精品xxx在线观看| 精品国产第一福利网站| 欧美三级精品| 老司机精品久久| 久久成人高清| jiujiure精品视频播放| 日韩1区2区日韩1区2区| 青青青免费在线视频| 日韩专区欧美专区| 麻豆91精品91久久久的内涵| 欧美一级精品| 日韩高清成人在线| 欧美日韩视频免费观看| 亚洲精品美女91| sm久久捆绑调教精品一区| 欧美日韩日本国产亚洲在线| 欧美影院精品| 成人片免费看| 中文字幕一区二区精品区| 麻豆精品视频在线观看免费| 伊人影院久久| 国产激情久久| 国产视频亚洲| 国产一区二区三区四区二区| 男人操女人的视频在线观看欧美| 精品国产一区二| 亚洲日产国产精品| 欧美三级网址| 国产精品久久久久77777丨| 激情综合激情| 你懂的亚洲视频| 亚洲一区二区三区无吗| 超级白嫩亚洲国产第一| 色综合视频一区二区三区日韩| 中文字幕在线视频久| 日韩和欧美一区二区| 久久国产亚洲精品| 精品三级av|