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

如何用Python爬取Barchart网站的Gap Up和Gap Down表格

解决Barchart Gap Up页面表格数据爬取问题

问题原因

你找不到表格的class/ID,是因为这个页面的表格数据不是直接嵌入在初始HTML里的——页面采用动态渲染机制,表格内容是在页面加载完成后,通过AJAX请求从后端API获取并渲染出来的。所以你用requests获取的初始HTML里,根本没有表格元素的源码。

找到真实数据接口的方法

  1. 打开浏览器开发者工具(按F12),切换到「Network」标签页
  2. 刷新页面,在筛选栏选择「XHR/fetch」类型的请求
  3. 逐个查看请求的响应内容,找到返回表格结构化数据(JSON格式)的接口。在这个页面里,你会定位到类似https://www.barchart.com/proxies/core-api/v1/quotes/get的请求,它的参数包含了「gapUp」筛选、排序规则等条件。

调整后的爬虫代码

直接请求这个API接口,就能拿到结构化的表格数据,不需要解析HTML:

import requests

# 真实数据接口地址
api_url = "https://www.barchart.com/proxies/core-api/v1/quotes/get"

# 对应页面筛选条件的请求参数
params = {
    "list": "stocks.us.gapUp",
    "orderBy": "gapUpPercent",
    "orderDir": "desc",
    "fields": "symbol,name,lastPrice,priceChange,percentChange,volume,volumeAvg,marketCap,tradeTime,gapUpPercent,gapDownPercent",
    "meta": "field.shortName,field.type,field.description",
    "page": 1,
    "limit": 100
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Referer": "https://www.barchart.com/stocks/performance/gap/gap-up?orderBy=gapUpPercent&orderDir=desc",
    "X-Requested-With": "XMLHttpRequest"
}

response = requests.get(api_url, headers=headers, params=params)

if response.status_code == 200:
    data = response.json()
    # 遍历提取数据,示例只打印关键字段
    for stock in data["data"]:
        print(f"代码: {stock['symbol']} | 名称: {stock['name']} | 跳空涨幅: {stock['gapUpPercent']}% | 当前价: {stock['lastPrice']}")
else:
    print(f"请求失败,状态码: {response.status_code}")

注意事项

  • 建议用当前浏览器的最新User-Agent,避免被网站拦截
  • 如果遇到403或验证问题,需要从浏览器的请求头里复制Cookie字段添加到headers中
  • API的参数(比如fields、limit)可能会随网站更新变化,定期通过开发者工具检查确认

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:52:14