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

使用Beautiful Soup爬取网页时获取两队分差返回空列表的问题

解决网页爬取分差返回空列表的问题

我来帮你搞定这个爬取分差的问题!你遇到的find_all返回空列表的情况,大概率是下面这两个原因之一,咱们一步步来排查:

1. 内容是JavaScript动态加载的

requests.get()只能获取网页的初始静态HTML,但很多体育比分网站的实时数据(比如你要的分差)是通过JavaScript动态渲染出来的。这时候初始HTML里根本没有match-history-diff-score-inc这个类的元素,自然返回空列表。

解决办法:用浏览器自动化工具模拟加载

比如用Selenium来模拟浏览器打开页面,等JS加载完再抓取元素。步骤如下:

  • 先安装Selenium:pip install selenium
  • 下载对应浏览器的驱动(比如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

url = 'https://www.mismarcadores.com/partido/Q942gje8/#punto-a-punto;1'
# 初始化浏览器驱动(这里用Chrome,你也可以换成Firefox等)
driver = webdriver.Chrome()
driver.get(url)

try:
    # 等待最多10秒,直到目标元素加载完成
    diff_elements = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, 'match-history-diff-score-inc'))
    )
    # 打印所有分差内容
    for elem in diff_elements:
        print(f"分差:{elem.text}")
finally:
    # 不管成功失败,最后关闭浏览器
    driver.quit()

2. 元素选择器不准确

网站可能更新了页面结构,你用的match-history-diff-score-inc类名已经失效了。

解决办法:检查真实DOM结构

打开目标网页,按F12打开开发者工具:

  • 用“选择元素”工具点击分差元素,查看它的真实class、标签或者其他属性
  • 比如可能现在分差元素的class变成了match-history-diff-score,或者嵌套在div标签里,这时候需要调整选择器

额外小技巧:直接抓API接口

很多网站的比分数据是通过API接口返回的,你可以在开发者工具的「Network」面板里,筛选XHR/Fetch请求,找到返回分差数据的接口,直接请求这个接口拿JSON数据,比爬HTML效率更高,也更稳定。

最后提醒一句:爬取网站数据时要遵守网站的robots.txt规则,不要频繁请求,避免触发反爬机制哦!

内容的提问来源于stack exchange,提问作者Víctor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:25:01