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

Python脚本爬取https://next.newsimpact.com/NewsWidget/Live表格遇XPath及源码问题

嘿,我来帮你排查这个问题!你遇到的情况其实很常见——页面里的表格是动态渲染出来的,所以直接爬取静态页面源码根本找不到它,XPath自然也就抓不到任何结果啦。下面给你两个靠谱的解决思路:

解决思路一:用浏览器自动化工具渲染页面

因为表格是通过JavaScript动态生成的,静态请求(比如requests.get)只能拿到未渲染的原始HTML,必须让浏览器执行完JS、渲染好完整DOM后再提取元素。推荐用Selenium或者Playwright,这里拿Selenium举个实操例子:

  • 先安装依赖:pip install selenium,同时要安装对应浏览器的驱动(比如ChromeDriver,版本要和你的Chrome浏览器匹配)
  • 示例代码:
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

# 初始化Chrome浏览器
driver = webdriver.Chrome()
try:
    driver.get("https://next.newsimpact.com/NewsWidget/Live")
    # 等待表格加载完成(最多等10秒),你可以替换成自己找到的表格XPath
    wait = WebDriverWait(driver, 10)
    target_table = wait.until(EC.presence_of_element_located((By.XPATH, "//table[contains(@class, 'news-widget-table')]")))
    
    # 提取表格内的数值,这里以遍历所有单元格为例
    rows = target_table.find_elements(By.TAG_NAME, "tr")
    for row in rows:
        cols = row.find_elements(By.TAG_NAME, "td")
        cell_values = [col.text for col in cols if col.text.strip()]
        if cell_values:
            print(cell_values)
finally:
    # 关闭浏览器
    driver.quit()

小提示:你可以在浏览器F12的Elements面板里,找到目标表格后右键「复制XPath」,替换代码里的路径,这样定位会更准确。

解决思路二:直接抓取后端数据接口(更高效)

动态页面的表格数据通常是通过AJAX请求从后端API获取的,这种方式比模拟浏览器快很多:

  1. 打开浏览器F12→切换到「Network」标签页,刷新页面
  2. 在「XHR」或「Fetch」分类里,找返回JSON格式数据的请求(可以看请求的Response内容,找和表格匹配的数据)
  3. 拿到这个API的URL后,直接用requests请求并解析数据:
import requests

# 替换成你找到的实际API接口URL
api_url = "xxxxxxx"
response = requests.get(api_url)
data = response.json()

# 根据返回的JSON结构提取你需要的数值
print(data)
额外调试技巧

你可以先在浏览器开发者工具的Elements面板里,用Ctrl+F搜索你的XPath,看看能不能定位到表格:

  • 如果能找到:说明是爬取方式的问题(静态请求没渲染JS),用上面两种方法解决
  • 如果找不到:说明你的XPath写得不对,需要调整路径,比如通过表格的类名、ID或者父元素来定位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:16:38