You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Beautiful Soup find_all无法获取目标表格的全部tr元素?

我的目标是什么?

我尝试爬取英超球员射门数据页面中的“Player Shooting”表格,具体是要将stats_shooting表格中的tr标签以列表形式返回(列表每个元素对应一个tr标签)。

我已完成的操作

我通过以下代码获取网页内容:

# Request page
all_players_shooting_url = "https://fbref.com/en/comps/9/shooting/Premier-League-Stats"
html = requests.get(all_players_shooting_url)
assert html.status_code == 200, f"Status code of {html.status_code} was returned."
soup = bs(html, 'html.parser')

遇到的问题及尝试的解决方法

我尝试了多种方法来获取所需数据,但均遇到问题:

  • 简单find_all方法 - 仅能获取外层信息,无法进一步查找tr标签
granular_search = soup.find_all("div", {"id": "all_stats_shooting"})
print(f"Granular search returns {len(granular_search)} results. Expected 1.")
  • 暴力查找所有table标签 - 无法找到目标表格
broad_search = soup.find_all("table", recursive=True)
print(f"Broad search returns {len(broad_search)} results. Expected 3.")
  • CSS选择器能找到目标div,但无法进一步获取tr标签
css_search = soup.select("#all_stats_shooting")
print(f"CSS search returns {len(css_search)} results. Expected 1.")
further_search = css_search[0].find_all("tr")
print(f"Further search returns {len(further_search)} results. Expected > 0.")
  • 查找所有tr标签 - 仅返回前两个表格的内容
tr_search = soup.find_all('tr')
print(f"Tr search returns {len(tr_search)} results. Expected > 44")

注意: 我已实现基于Selenium的解决方案,但该方案速度慢且不稳定,因此现有相关答案无法真正解决我的问题。


内容的提问来源于stack exchange,提问作者gm209

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:05:17