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

使用BeautifulSoup抓取CBSsports高尔夫赛事结果时表格行缺失问题

解决CBSsports高尔夫赛事结果抓取不完整的问题

嗨,我来帮你搞定这个抓取难题!你遇到的情况大概率是动态内容加载导致的——Chrome开发者工具看到的是浏览器执行完JavaScript后渲染出的完整页面,而BeautifulSoup直接解析的是服务器返回的静态HTML,这部分里很多数据还没被JS填充进去。下面给你几个可行的解决方案:

1. 用Selenium模拟浏览器加载完整页面

Selenium可以模拟真实浏览器打开页面,等待JavaScript执行完毕后再获取完整的页面源码,这样BeautifulSoup就能拿到所有表格内容了。

步骤和示例代码:

  • 先安装Selenium:pip install selenium
  • 下载对应浏览器的驱动(比如Chrome的ChromeDriver,要和你的浏览器版本匹配)
  • 编写代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

# 初始化浏览器驱动(这里以Chrome为例)
driver = webdriver.Chrome()
driver.get("你要抓取的CBSsports高尔夫赛事页面URL")

# 等待Leaderboard表格加载完成,最多等10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "Leaderboard"))
    )
    # 获取完整的页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, "html.parser")
    
    # 现在就能正常解析整个Leaderboard表格了
    leaderboard_table = soup.find("table", id="Leaderboard")
    all_rows = leaderboard_table.find_all("tr")
    print(f"共抓到{len(all_rows)}行数据")
finally:
    driver.quit()

2. 直接抓取后台API接口(更高效)

很多网站会通过AJAX请求从后台API获取数据,再渲染到页面上。你可以通过Chrome的Network面板找到这个API:

  • 打开Chrome开发者工具(F12),切换到Network标签
  • 刷新页面,在筛选器里选择XHR或Fetch
  • 查找返回赛事数据的请求(通常URL里会有类似leaderboard、results的关键词)
  • 直接用requests请求这个API,就能拿到结构化的JSON数据,比解析HTML简单得多

3. 检查请求头是否完整

有时候服务器会根据请求头判断是否是浏览器请求,如果你的requests.get没有加合适的User-Agent,可能会返回不完整的内容。可以试试添加请求头:

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
response = requests.get("目标URL", headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
# 再尝试解析表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:33:59