如何用Python爬取Barchart平台盘前交易数据表格?
解决Barchart盘前交易数据爬取403错误的方法
403错误通常是服务器识别出请求并非来自正常浏览器,可通过以下方式解决:
- 模拟浏览器请求头:给请求添加浏览器标识及相关头信息,让服务器认为请求来自合法客户端。至少要包含
User-Agent,还可补充Accept、Accept-Language等字段。 - 用Session统一管理请求头:在Session中设置默认请求头,确保后续所有请求都携带这些标识。
- 优先请求AJAX接口:页面表格数据多通过AJAX异步加载,可通过浏览器开发者工具抓包找到真实数据接口,直接请求接口能更高效获取结构化数据。
修改后的代码示例:
import requests # 模拟浏览器的请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Referer': 'https://www.barchart.com/' } target_url = 'https://www.barchart.com/stocks/pre-market-trading/volume-advances?orderBy=preMarketVolume&orderDir=desc' # 初始化Session并设置默认请求头 session = requests.Session() session.headers.update(headers) response = session.get(target_url) print(f"请求状态码: {response.status_code}") # 若需解析页面数据,可引入BeautifulSoup # from bs4 import BeautifulSoup # soup = BeautifulSoup(response.text, 'html.parser') # 后续提取表格数据逻辑
额外提示:
- 若仍返回403,可先访问Barchart首页获取Cookie,再请求目标页面;
- 控制请求频率,避免短时间内多次请求导致IP被封禁,必要时添加
time.sleep()延时。
内容的提问来源于stack exchange,提问作者RandomWalk
相关产品推荐
相关产品推荐

