精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用Python遍歷HTML表和抓取表格數據

譯文
開發 前端
遍歷HTML表通常很棘手,因此需要創建一個指南來幫助人們理解如何使用Python從公共HTML表中提取表格數據。

譯者 | 李睿

審校 | 孫淑娟

表格數據是網絡上最好的數據來源之一。它們可以存儲大量有用的信息,同時又不丟失易于閱讀的格式,使其成為數據相關項目的金礦。

無論是抓取足球賽事數據還是提取股票市場數據,都可以使用Python從HTML表中快速訪問、解析和提取數據,而這需要感謝Requests和Beautiful Soup。

理解HTML表的結構

從視覺上看,HTML表是一組以表格格式顯示信息的行和列。本文主要介紹如何抓取表格數據:

為了能夠抓取該表中包含的數據,需要更深入地研究它的編碼。

一般來說,HTML表實際上是使用以下HTML標記構建的:

  • <table>:標志著HTML表的開始  
  • <th> 或 <thead>:定義行作為HTML表的標題  
  • <tbody>:表示數據所在的部分
  • <tr>:表示表中的一行
  • <td>:在表中定義單元格  

??然而,正如人們在實際場景中看到的,并不是所有開發人員在構建表時都遵循這些約定,這使得一些項目比其他項目更難。不過,了解它們的工作原理對于找到正確的方法至關重要。

在瀏覽器中輸入表的??URL??,并檢查頁面,看看在底層發生了什么。  

這就是這個頁面非常適合練習用Python抓取表格數據的原因。有一個明確的<table>標簽對打開和關閉表,所有相關數據都在<tbody>標簽中。它只顯示與前端所選條目數量匹配的10行。  

關于這個表還有一些需要了解的事情,即想要抓取的條目共有57個,并且似乎有兩種訪問數據的解決方案。第一種是點擊下拉菜單,選擇“100”,顯示所有條目:

或者單擊“下一步”按鈕以瀏覽分頁。

那么哪一種方案會更好?這兩種解決方案都會給腳本增加額外的復雜性,因此,先檢查從哪里提取數據。  

當然,因為這是一個HTML表,因此所有數據都應該在HTML文件本身上,而不需要AJAX注入。要驗證這一點,需要右擊>查看頁面來源。接下來,復制一些單元格并在源代碼中搜索它們。  

對來自不同分頁單元格的多個條目執行了相同的操作,盡管前端沒有顯示,但似乎所有目標數據都在其中。

有了這些信息,就可以開始編寫代碼了。

使用Python的Beautiful Soup刪除HTML表

因為要獲取的所有員工數據都在HTML文件中,所以可以使用Requests庫發送HTTP請求,并使用Beautiful Soup解析響應。  

注:對于網頁抓取的新手,本文作者在Python教程中為初學者創建了一個網絡抓取教程。盡管新手沒有經驗也可以學習,但從基礎開始總是一個好主意。  

1.發送主請求  

在這個項目中創建一個名為python-html-table的新目錄,然后創建一個名為bs4-table-scraper的新文件夾,最后創建一個新的python_table_scraper.py文件。

從終端pip3安裝請求beautifulsoup4,并將它們導入到項目中,如下所示:

import requests 
from bs4 import BeautifulSoup

要用requests發送HTTP請求,所需要做的就是設置一個URL并通過request.get()傳遞它,將返回的HTML存儲在響應變量中并輸出response.status_code。  

注:如果完全不熟悉Python,可以使用命令python3python_table_scraper.py從終端運行代碼。  

url = 'https://datatables.net/examples/styling/stripe.html'  
response = requests.get(url)
print(response.status_code)

如果它有效,將會返回一個200狀態碼。任何其他情況都意味著IP正在被網站設置的反抓取系統拒絕。一個潛在的解決方案是在腳本中添加自定義標題,使腳本看起來更加人性化,但這可能還不夠。另一個解決方案是使用Web抓取API處理所有這些復雜的問題。  

2.使用Beautiful Soup構建解析器  

在提取數據之前,需要將原始HTML轉換為格式化或解析的數據。將這個解析后的HTML存儲到一個soup對象中,如下所示:

soup = BeautifulSoup(response.text, 'html.parser')

從這里開始,可以使用HTML標記及其屬性遍歷解析樹。  

如果返回到頁面上的表,已經看到該表用類stripe dataTable封裝在<table>標記之間,可以使用它來選擇該表。

table = soup.find('table', class_ = 'stripe') 
print(table)

注:在測試之后,添加第二個類(dataTable)并沒有返回元素。實際上,在return元素中,表的類只是stripe。還可以使用id='example'。

以下是它返回的結果:

Table Return

既然已經獲取了表,就可以遍歷行并獲取所需的數據。

3.遍歷HTML表  

回想一下HTML表的結構,每一行都由<tr>元素表示,其中有包含數據的<td>元素,所有這些都包裝在<tbody>標簽對之間。

為了提取數據,將創建兩個for looks,一個用于抓取表的<tbody>部分(所有行所在的位置),另一個用于將所有行存儲到可以使用的變量中:

for employee_data in table.find_all('tbody'):  
rows = employee_data.find_all('tr')
print(rows)

在行中,將存儲表正文部分中找到的所有<tr>元素。如果遵循這個邏輯,下一步就是將每一行存儲到單個對象中,并循環遍歷它們以查找所需的數據。

首先,嘗試使用.querySelectorAll()方法在瀏覽器控制臺上選擇第一個員工的名字。這個方法的一個真正有用的特性是,可以越來越深入地實現大于(>)符號的層次結構,以定義父元素(在左側)和要獲取的子元素(在右側)。

document.querySelectorAll('table.stripe &amp;amp;amp;gt; tbody &amp;amp;amp;gt; tr &amp;amp;amp;gt; td')[0]

如上所見,一旦抓取所有<td>元素,這些元素就會成為節點列表。因為不能依賴類來獲取每個單元格,所以只需要知道它們在索引中的位置,而第一個name是0。

從那里,可以像這樣編寫代碼:  

for row in rows:    
name = row.find_all('td')[0].text
print(name)

簡單地說,逐個獲取每一行,并找到其中的所有單元格,一旦有了列表,只獲取索引中的第一個單元格(position 0),然后使用.text方法只獲取元素的文本,忽略不需要的HTML數據。

這是一個包含所有員工姓名的列表! 對于其余部分,只需要遵循同樣的邏輯:

position = row.find_all('td')[1].text 
office = row.find_all('td')[2].text
age = row.find_all('td')[3].text
start_date = row.find_all('td')[4].text
salary = row.find_all('td')[5].text

然而,將所有這些數據輸出在控制臺上并沒有太大幫助。與其相反,可以將這些數據存儲為一種、更有用的新格式。

4.將表格數據存儲到JSON文件中  

雖然可以輕松地創建一個CSV文件并將數據發送到那里,但如果可以使用抓取的數據創建一些新內容,那么這將不是最容易管理的格式。

盡管如此,以前做的一個項目解釋了如何創建一個CSV文件來存儲抓取的數據。  

好消息是,Python有自己的JSON模塊來處理JSON對象,所以不需要安裝任何程序,只需要導入它。  

import json

但是,在繼續并創建JSON文件之前,需要將所有這些抓取的數據轉換為一個列表。為此,將在循環外部創建一個空數組。  

employee_list = []

然后向它追加數據,每個循環向數組追加一個新對象。

employee_list.append({    'Name': name,    'Position': position,    'Office': office,    'Age': age,    'Start date': start_date,    'salary': salary })

如果print(employee_list),其結果如下:

Employee_List

還是有點混亂,但已經有了一組準備轉換為JSON的對象。  

注:作為測試,輸出employee_list的長度,它返回57,這是抓取的正確行數(行現在是數組中的對象)。  

將列表導入到JSON只需要兩行代碼:  

with open('json_data', 'w') as json_file:   
json.dump(employee_list, json_file, indent=2)
  • 首先,打開一個新文件,傳入想要的文件名稱(json_data)和'w',因為想要寫入數據。  
  • 接下來,使用.dump()函數從數組(employee_list)和indent=2中轉儲數據,這樣每個對象都有自己的行,而不是所有內容都在一個不可讀的行中。  

5.運行腳本和完整代碼  

如果一直按照下面的方法做,那么代碼庫應該是這樣的:

#dependencies 
import requests
from bs4 import BeautifulSoup
import json
url = 'http://api.scraperapi.com?api_key=51e43be283e4db2a5afbxxxxxxxxxxx&url=https://datatables.net/examples/styling/stripe.html'
#empty array
employee_list = []
#requesting and parsing the HTML file
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
#selecting the table
table = soup.find('table', class_ = 'stripe')
#storing all rows into one variable
for employee_data in table.find_all('tbody'):
rows = employee_data.find_all('tr')
#looping through the HTML table to scrape the data
for row in rows:
name = row.find_all('td')[0].text
position = row.find_all('td')[1].text
office = row.find_all('td')[2].text
age = row.find_all('td')[3].text
start_date = row.find_all('td')[4].text
salary = row.find_all('td')[5].text
#sending scraped data to the empty array
employee_list.append({
'Name': name,
'Position': position,
'Office': office,
'Age': age,
'Start date': start_date,
'salary': salary
})
#importing the array to a JSON file
with open('employee_data', 'w') as json_file:
json.dump(employee_list, json_file, indent=2)

注:在這里為場景添加了一些注釋。

以下是JSON文件中的前三個對象:

以JSON格式存儲抓取數據允將信息用于新的應用程序

使用Pandas抓取HTML表  

在離開頁面之前,希望探索第二種抓取HTML表的方法。只需幾行代碼,就可以從HTML文檔中抓取所有表格數據,并使用Pandas將其存儲到數據框架中。  

在項目的目錄中創建一個新文件夾(將其命名為panda-html-table-scraper),并創建一個新文件名pandas_table_scraper.py。  

打開一個新的終端,導航到剛剛創建的文件夾(cdpanda-html-table-scraper),并從那里安裝pandas:

pip install pandas

在文件的頂部導入它。

import pandas as pd

Pandas有一個名為read_html()的函數,它主要抓取目標URL,并返回所有HTML表作為DataFrame對象的列表。  

要實現這一點,HTML表至少需要結構化,因為該函數將查找<table>之類的元素來標識文件中的表。

為了使用這個函數,需要創建一個新變量,并將之前使用的URL傳遞給它:  

employee_datapd.read_html('http://api.scraperapi.com?api_key=51e43be283e4db2a5afbxxxxxxxxxxxx&url=https://datatables.net/examples/styling/stripe.html')

當輸出它時,它將返回頁面內的HTML表列表。  

HTMLTables

如果比較DataFrame中的前三行,它們與采用BeautifulSoup抓取的結果完全匹配。  

為了處理JSON,Pandas可以有一個內置的.to_json()函數。它將把DataFrame對象列表轉換為JSON字符串。  

而所需要做的就是調用DataFrame上的方法,并傳入路徑、格式(split,data,records,index等),并添加縮進以使其更具可讀性:  

employee_data[0].to_json('./employee_list.json', orient='index', indent=2)

如果現在運行代碼,其結果文件如下:

Resulting File

注意,需要從索引([0])中選擇表,因為.read_html()返回一個列表,而不是單個對象。  

以下是完整的代碼以供參考

import pandas as pd  
employee_data = pd.read_html('http://api.scraperapi.com?api_key=51e43be283e4db2a5afbxxxxxxxxxxxx&url=https://datatables.net/examples/styling/stripe.html')
employee_data[0].to_json('./employee_list.json', orient='index', indent=2)

有了這些新知識,就可以開始抓取網絡上幾乎所有的HTML表了。只要記住,如果理解了網站的結構和背后的邏輯,就沒有什么是不能抓取的。  

也就是說,只要數據在HTML文件中,這些方法就有效。如果遇到動態生成的表,則需要找到一種新的方法。  

原文標題:??How to Use Python to Loop Through HTML Tables and Scrape Tabular Data??,作者:Zoltan Bettenbuk?

責任編輯:華軒 來源: 51CTO
相關推薦

2017-05-08 15:47:06

2010-07-16 11:16:40

Perl抓取網頁

2017-02-24 11:00:57

iOS抓取HTML解析數據

2024-11-14 08:00:00

Python迭代器

2017-01-20 08:44:53

Apache Flum抓取數據

2020-08-24 14:21:27

app爬蟲Python

2021-06-29 15:52:03

PythonPOST

2021-07-09 18:26:41

PythonMySQL MongoDB

2020-11-20 10:52:54

Antd表格日程

2010-11-11 10:41:03

sql server遍

2010-11-24 13:11:06

MySQL遍歷數據表

2011-12-15 01:01:16

ibmdw

2022-06-06 08:21:13

MySQL數據庫命令

2010-11-11 11:00:06

sql server遍

2019-09-29 09:08:41

Python數據庫Google

2017-08-10 13:43:00

大數據數據表格優化設計

2020-10-12 08:19:43

Python爬蟲網頁數據

2010-03-12 16:39:55

Python多線程

2024-11-26 08:00:00

SQLPandasPandaSQL

2020-04-13 13:50:15

Python電子表格編程語言
點贊
收藏

51CTO技術棧公眾號

欧美日韩的一区二区| 中文字幕视频网| 亚洲中文字幕在线一区| 欧美日本三级| 久久久www| 91精品国产手机| 日本一区二区视频| 青青青在线免费观看| 在线看片福利| 国产精品456| 亚洲国产日韩欧美在线动漫| 亚洲欧洲一区二区| 免费观看成人毛片| 天堂av一区| 国产精品久久毛片a| 136fldh精品导航福利| 91插插插影院| 在线观看免费黄色| 日本精品影院| 亚洲伊人色欲综合网| 国产精品视频地址| free性中国hd国语露脸| 欧洲一区二区三区| 精品亚洲成a人| 伊人久久五月天| 18禁免费观看网站| 国产99视频在线| 久久网站免费观看| 黑人巨大精品欧美一区二区三区| 超碰97在线资源| 国产精品国产精品88| 久久久久黄色| 国产欧美日韩精品a在线观看| 2019最新中文字幕| 在线观看福利片| 成人av观看| 久久久久国产精品麻豆ai换脸 | 午夜一级在线看亚洲| 精品91自产拍在线观看一区| 黄黄视频在线观看| 国产男女猛烈无遮挡| 中文字幕一区二区三区在线视频 | 91精品国产色综合| 欧美黑人猛猛猛| 91亚洲无吗| 亚洲va欧美va国产va天堂影院| 国产精品久久久对白| 激情视频在线播放| 国产精品对白久久久久粗| 偷窥少妇高潮呻吟av久久免费| 久久久久国产精品视频| www.久久久久久久| 成人精品中文字幕| 欧美夫妻性生活| 97在线国产视频| 熟妇人妻一区二区三区四区| 美女91精品| 91国产精品视频在线| 久久午夜无码鲁丝片| 日韩在线黄色| 欧美日韩国产美| 国产福利影院在线观看| 麻豆系列在线观看| 国产成人精品www牛牛影视| 久久久久久久一区二区三区| 亚洲第九十七页| 国产精品45p| 亚洲护士老师的毛茸茸最新章节| 在线黄色免费网站| 精品网站在线| 亚洲人成人一区二区在线观看| 粉嫩av一区二区三区免费观看| 免费在线观看黄网站| 日韩av有码| 欧美精品一区二区三区视频 | 亚洲欧美偷拍一区| 91视频综合| 精品国产一区二区三区四区在线观看| 天天色天天综合网| 碰碰在线视频| 亚洲欧洲美洲综合色网| 国产原创精品| 国产精品玖玖玖| 久久中文欧美| 久99久在线视频| 国产精品国产三级国产专业不| 粉嫩91精品久久久久久久99蜜桃| 亚洲国产精品一区二区www在线| 亚洲国产午夜伦理片大全在线观看网站 | 日本中文字幕一区二区视频 | 国产丝袜精品丝袜| 国产免费观看久久| 在线观看视频黄色| 免费a级毛片在线观看| 国产成人丝袜美腿| 久久av一区二区三区漫画| 国产永久免费高清在线观看视频| 成人黄页毛片网站| 国产综合香蕉五月婷在线| 国产一级做a爰片在线看免费| 日韩影院二区| 欧美成人午夜激情在线| 欧美三级视频网站| 中文无码久久精品| 青青草成人在线| xxxxxx国产| 国内综合精品午夜久久资源| 伊人成人开心激情综合网| 欧美卡一卡二卡三| 久久精品主播| 国产高清在线一区二区| 国产三区四区在线观看| 91丝袜美腿高跟国产极品老师| 91夜夜未满十八勿入爽爽影院 | 精品一区二区视频| 亚洲AV无码乱码国产精品牛牛| 久久精品国产77777蜜臀| 青草成人免费视频| 国产成人精品一区二三区四区五区 | 国产又黄又粗又猛又爽的视频| 欧美高清一级片| 亚洲色图美腿丝袜| 国产肥白大熟妇bbbb视频| 日韩在线你懂的| 欧美成人中文字幕| 国产偷人爽久久久久久老妇app | 中文字幕12页| 国产精品手机在线播放| 日韩精品免费电影| 久久精品综合视频| 欧美一区二区三区久久精品茉莉花| 久久久精品国产亚洲| 日本中文在线视频| 日韩国产精品大片| 成人黄色短视频在线观看 | 91精品国产综合久久精品性色| av网站免费在线看| 国产精品婷婷| 日韩av免费在线看| 波多野结衣一区二区三区在线 | 免费不卡av网站| 一级毛片精品毛片| 欧美精品一区二区三区久久久 | 国产精品久久久久久网站| 日韩中文字幕免费观看| 91美女片黄在线观看91美女| 成人一区二区av| 国产夫妻在线播放| 黑人巨大精品欧美一区免费视频| 麻豆av免费看| 91青草视频久久| 免费网站成人| 欧美猛男男办公室激情| 国产黄a三级三级| 欧美日一区二区在线观看| 97视频免费观看| 国产成人av免费| 国产三级精品三级| 大片在线观看网站免费收看| 91精品国产色综合久久不卡粉嫩| 精品久久久三级丝袜| 日本xxxx裸体xxxx| 性色一区二区| 日韩欧美激情一区二区| 日韩专区av| 欧美在线观看视频一区二区三区| 精品综合久久久久| 先锋资源久久| 青草青草久热精品视频在线观看| 青青青草原在线| 一区二区三区四区国产精品| 久久久精品在线视频| www.久久草.com| 久久99精品久久久久久噜噜| 丰满人妻一区二区三区四区53| 国产欧美日韩三区| 成年人三级黄色片| 女仆av观看一区| 日本午夜精品理论片a级appf发布| 免费观看成年在线视频网站| 欧美日韩小视频| jizz日本免费| 青青草91视频| 国产精品无码免费专区午夜| 国产精品一区二区av影院萌芽| 亚洲无限av看| 国产成人在线免费观看视频| 国产亚洲一区二区在线观看| 欧美视频亚洲图片| 亚洲黄色在线| 亚洲精品欧美日韩专区| 成av人电影在线观看| 狠狠久久五月精品中文字幕| 永久免费av无码网站性色av| 国产一区二三区| 亚洲午夜精品久久| 视频在线日韩| 亚洲精品有码在线| 日韩欧美三级在线观看| 国产女同性恋一区二区| 熟妇无码乱子成人精品| 亚洲欧美不卡| 国产一二三四五| 天天综合91| 最近2019中文字幕第三页视频| 欧美一区二区三区网站| 中文字幕中文字幕中文字幕亚洲无线 | 中文字幕人妻一区| 欧美精品99| 日本午夜精品一区二区| 亚洲一区二区三区四区电影| 国产精品露脸自拍| 国产传媒在线观看| 久久成人这里只有精品| 国产精品伦理一区| 91久久久免费一区二区| 欧美图片一区二区| 久久伊人亚洲| 精品少妇人妻av免费久久洗澡| 日韩成人激情| 欧洲精品一区色| 牛牛视频精品一区二区不卡| 99国产高清| 亚洲天堂网站| 国产啪精品视频网站| 久久91导航| 51精品国产黑色丝袜高跟鞋| 婷婷丁香在线| 久久影院在线观看| 免费观看在线午夜影视| 亚洲色在线视频| 青青国产在线| 亚洲国产精品系列| 亚洲欧美激情另类| 日韩女优制服丝袜电影| 日本三级黄色大片| 亚洲欧美一区二区三区极速播放 | 国产香蕉精品视频| 精品一区二区国语对白| 国产精品乱码久久久久| 日韩国产欧美一区二区| 欧美三级网色| 亚洲三级在线| 成人免费网站在线看| 国产精品诱惑| 国产精品亚发布| 神马午夜伦理不卡| 免费av一区二区| a免费在线观看| 亚洲成人中文字幕| 国产精品视频一区在线观看| 图片区小说区区亚洲影院| 日本在线观看中文字幕| 性感美女极品91精品| 国产大片中文字幕| 午夜精品成人在线| 国产免费av一区| 欧洲av在线精品| 国产一级二级毛片| 亚洲图片自拍偷拍| 国产成人在线观看网站| 欧美性开放视频| 午夜精品福利在线视频| 综合欧美亚洲日本| 私库av在线播放| 同产精品九九九| www.日韩一区| 欧美放荡的少妇| 亚洲黄色在线播放| 精品亚洲夜色av98在线观看| 黄色av网站在线看| 日韩综合中文字幕| 免费观看在线黄色网| 欧美精品福利在线| 欧美片第1页| 久99久在线视频| 精品丝袜在线| 国产精品视频久久久| 不卡一区视频| 国产日韩在线一区二区三区| 伊人久久大香线蕉无限次| 91免费版黄色| xxxxx.日韩| 97免费资源站| 一区二区三区韩国免费中文网站| 亚洲欧洲一区二区| 国产精品红桃| 中文字幕在线观看第三页| 激情国产一区二区| 菠萝菠萝蜜网站| 亚洲视频综合在线| 一级片中文字幕| 在线综合+亚洲+欧美中文字幕| 欧美福利视频一区二区| 91福利区一区二区三区| 国产黄色一区二区| 亚洲开心激情网| 天堂中文在线观看视频| 一区二区三区国产视频| 深夜国产在线播放| 国产精品精品视频一区二区三区| 亚洲天堂免费电影| 成人精品视频久久久久| 亚洲国产网址| 日韩欧美视频免费在线观看| 日韩国产在线观看一区| 女同性αv亚洲女同志| 日本一区二区三区在线观看| 精品少妇一二三区| 欧美精品一级二级三级| 男人的天堂av高清在线| 欧美理论片在线观看| 成人av色网站| 女同一区二区| 日韩精品a在线观看91| 天天做天天爱天天高潮| 久热精品在线| 北岛玲一区二区| 一个色综合av| 国产精品99精品无码视| 欧美日韩精品免费| 欧美69xxxxx| 97精品伊人久久久大香线蕉 | 国产一区二区免费电影| 99精品美女| 色撸撸在线观看| 日韩不卡手机在线v区| 国产高清成人久久| 一区二区理论电影在线观看| 在线视频你懂得| 在线播放精品一区二区三区| 电影一区二区三| 久久久神马电影| 国产精品一二| av在线播放网址| 欧美日韩国产影院| 人妻偷人精品一区二区三区| 欧美高清视频一区二区| www.youjizz.com在线| 97人人澡人人爽| 亚洲国产老妈| 91性高潮久久久久久久| 国产精品第四页| 在线观看免费观看在线| 中文字幕精品一区二区精品| 韩国av网站在线| 韩剧1988免费观看全集| 色悠久久久久综合先锋影音下载| 在线码字幕一区| 欧美天堂亚洲电影院在线观看| www.成年人| 亚洲免费色视频| 国产成人精品一区二三区| 亚洲国产成人精品女人久久久 | 国产精品精品视频| 成人3d动漫在线观看| 色乱码一区二区三区在线| 国产99久久久国产精品免费看 | 99在线观看视频| 欧美日韩网址| 国产视频久久久久久| 欧美日韩裸体免费视频| 日本国产在线| 国产精品亚发布| 欧美一区网站| 人妻互换一二三区激情视频| 精品久久久久久久久久| 毛片免费在线播放| 国产精品久久在线观看| 99久久影视| 亚洲美女在线播放| 一区在线观看视频| 国产成人精品一区二三区四区五区 | www.日韩| 杨幂一区欧美专区| 国产99久久久国产精品潘金| 在线观看亚洲欧美| 中文字幕亚洲情99在线| 国产一区二区高清在线| 欧美日韩电影一区二区三区| 日韩国产欧美在线观看| 亚洲一级二级片| 在线精品观看国产| 秋霞a级毛片在线看| caoporn国产精品免费公开| 国产精品丝袜xxxxxxx| 欧美xxxooo| 亚洲高清久久网| 成人国产在线| www.夜夜爱| 国产女同性恋一区二区| 黄色av免费观看| 国产精品第七影院| 国产精品chinese| 无码人妻精品一区二区中文| 日韩欧美国产一区二区三区| 一级毛片久久久| 白白操在线视频| 中文字幕精品三区| 91麻豆精品在线|