我正在尝试从网站上抓取特定表格并获取该表格中的特定数据。我很确定我使用的代码应该可以工作,但它只返回 []。那只是为了找到那行数据,我还没有找到我想要的具体数据。
这是我的代码:
.getClassName()
如果您访问该网站,我想通过网络抓取的表格是“高级”统计数据表格并从中提取 USG%。我只想要 2021 赛季的 USG 数据。
此外,当我刚刚输入“soup”时,我会看到我想要的内容在那里,但是当我说 from bs4 import BeautifulSoup
import requests
headers = {'User Agent':'Mozilla/5.0'}
url = 'https://www.sports-reference.com/cbb/players/cade-cunningham-1.html'
res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
advanced = soup.findAll('tr', id = 'players_advanced.2021')
advanced
时,它只返回网站上第一个表的标题,即使有很多。我不知道这是为什么。
答案 0 :(得分:1)
数据以 HTML 注释 (<!-- -->
) 的形式存在于页面内。要解析它,您可以使用下一个示例:
import requests
from bs4 import BeautifulSoup, Comment
url = "https://www.sports-reference.com/cbb/players/cade-cunningham-1.html"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
data = soup.find("h2", text="Advanced").find_next(
text=lambda t: isinstance(t, Comment)
)
data = BeautifulSoup(str(data), "html.parser")
for tr in data.select("tbody tr"):
row = [td.get_text(strip=True) for td in tr.select("td")]
usgs = row[18]
print(usgs)
打印:
29.1