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属性来选择所需的表。
还有一个问题,如果我知道我要抓取的页面包含很多表,而我需要的那个表中总是有10 td
个表中的1个row
,我可以有类似的东西
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)
我有一个解决方案,不是一个好的解决方案,只是从页面上提取我需要的第一个表,欢迎提出任何建议/改进!
谢谢。
答案 0 :(得分:1)
要仅获取第一个表,可以使用CSS选择器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)