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

使用Beautiful Soup爬取infogol.net时无法找到指定表格的问题

问题原因

你用requests爬取不到目标表格,核心原因是这个页面依赖AngularJS(从ng-scope类能看出来)动态渲染内容。requests只能获取服务器返回的初始静态HTML,而目标表格是浏览器执行JS后才生成的,所以静态源码里根本没有这个表格元素。

解决方案

1. 用Selenium模拟浏览器渲染

Selenium可以模拟真实浏览器加载页面,等JS执行完成后再获取完整的页面源码,这样就能找到目标表格了。示例代码:

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

url = 'https://www.infogol.net/en/team/ajax/62'

# 初始化Chrome浏览器驱动(需提前下载对应版本的ChromeDriver并配置路径)
driver = webdriver.Chrome()
driver.get(url)

# 等待目标表格加载完成,最多等待10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'teamstats-summary-matches'))
    )
    # 获取渲染后的完整页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    table = soup.find('table', class_='teamstats-summary-matches ng-scope')
    if table:
        print('成功找到目标表格')
        # 此处可添加表格数据提取逻辑
    else:
        print('仍未找到目标表格')
finally:
    driver.quit()

2. 直接抓取数据接口(更高效)

打开浏览器开发者工具(F12),切换到Network标签,刷新页面后筛选XHR/fetch类型的请求,赛事数据通常会通过API接口以JSON格式返回。找到包含赛事数据的接口后,直接用requests请求该接口,就能拿到结构化数据,无需解析HTML。

示例代码(需自行抓包确认真实接口地址):

import requests

# 示例API地址(实际需根据抓包结果替换)
api_url = 'https://www.infogol.net/api/team/matches/62'
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(api_url, headers=headers)
if response.status_code == 200:
    match_data = response.json()
    print('成功获取赛事数据:', match_data)
    # 此处可添加JSON数据处理逻辑
else:
    print('API请求失败,状态码:', response.status_code)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:15:41