Web抓取:如何从许多表主体中刮出一个特定的表主体?

时间:2019-05-30 20:27:52

标签: web-scraping beautifulsoup

我正在尝试抓取网站中的特定表格-http://stats.espncricinfo.com/ci/engine/player/35320.html?class=2;template=results;type=batting

现在,有多个表彼此无法区分。我只想从那里刮一张桌子。我该怎么办?

我尝试使用find_all()函数。但这仅列出了所有<tbody>标签。

我只想刮擦突出显示的表主体。

Screenshot-from-2019-05-31-01-54-52.png

1 个答案:

答案 0 :(得分:0)

它带有tbody标记,您可以在bs4中使用以下css选择器。然后用table标签包裹并传递给熊猫以使其打印精美。我正在使用bs4 4.7.1

您也可以使用table = soup.select('tbody:contains(year)')

Python:

from bs4 import BeautifulSoup as bs
import requests
import pandas as pd

r = requests.get('http://stats.espncricinfo.com/ci/engine/player/35320.html?class=2;template=results;type=batting')
soup = bs(r.content, 'lxml')
table = soup.select('tbody:nth-child(7)')
headers = [item.text for item in soup.select('.headlinks th')]
df = pd.read_html('<table>' + str(table) + '</table>')[0]
df.columns = headers
df = df.dropna(how = 'all', axis=0).drop(['Span',''], axis=1)
print(df)

df.head()

enter image description here