[英]Beautifulsoup scraping specific table in page with multiple tables
import requests
from bs4 import BeautifulSoup
results = requests.get("https://en.wikipedia.org/wiki/List_of_multiple_Olympic_gold_medalists")
src = results.content
soup = BeautifulSoup(src, 'lxml')
trs = soup.find_all("tr")
for tr in trs:
print(tr.text)
这是我从“https://en.wikipedia.org/wiki/List_of_multiple_Olympic_gold_medalists”页面为抓取表编写的代码
如果我只针对“职业生涯最多奥运金牌榜”中的表格,我该如何指定我需要的表格? 有 2 个可排序的jquery-tablesorter
所以我不能使用 class 属性来选择我需要的表。
还有一个问题,如果我知道我正在抓取的页面包含很多表格,而我需要的表格总是在 1 row
有 10 td
,我可以有类似的东西吗
If len(td) == 10:
print(tr)
提取我想要的数据
代码更新:
from bs4 import BeautifulSoup
results = requests.get("https://en.wikipedia.org/wiki/List_of_multiple_Olympic_gold_medalists")
src = results.content
soup = BeautifulSoup(src, 'lxml')
tbs = soup.find("tbody")
trs = tbs.find_all("tr")
for tr in trs:
print(tr.text)
我有一个解决方案,不是一个好的解决方案,只是从我需要的页面中提取第一个表格,欢迎任何建议/改进!
谢谢你。
要仅获取第一个表,您可以使用 CSS Selector nth-of-type(1)
:
import requests
from bs4 import BeautifulSoup
URL = "https://en.wikipedia.org/wiki/List_of_multiple_Olympic_gold_medalists"
soup = BeautifulSoup(requests.get(URL).content, "html.parser")
table = soup.select_one("table.wikitable:nth-of-type(1)")
trs = table.find_all("tr")
for tr in trs:
print(tr.text)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.