繁体   English   中英

Beautifulsoup 在具有多个表格的页面中抓取特定表格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM