使用BeautifulSoup与JSON爬取数据结果不符的问题求助
解决纳斯达克存档头条爬取返回当前头条的问题
确认RPC接口的正确参数结构
你当前的params是空数组[],但存档头条接口BL_NewsListing.GetArchiveHeadlinesPageData需要传入分页信息和日期范围参数。打开浏览器开发者工具(F12),切换到Network标签,访问目标存档页面,找到调用RPCHandler.axd的POST请求,查看它的params内容,会发现类似这样的结构:[{"pageNumber":1,"pageSize":25,"startDate":"2024-01-01","endDate":"2024-12-31"}]空数组会导致接口无法识别存档请求,进而返回默认的当前头条数据。
修正请求的method和参数
把method改为BL_NewsListing.GetArchiveHeadlinesPageData,同时更新params为包含日期范围和分页的数组。另外建议补充User-Agent到请求头,避免被接口拦截:import requests from bs4 import BeautifulSoup headers = { "Referer": "http://www.nasdaqtrader.com/Trader.aspx?id=archiveheadlines&cat_id=105", "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" } # 替换为你需要的日期范围和分页参数 data = { "id": 2, "cat_id": 105, "method": "BL_NewsListing.GetArchiveHeadlinesPageData", "params": '[{"pageNumber":1,"pageSize":25,"startDate":"2024-01-01","endDate":"2024-12-31"}]', "version": "1.1" } url = "https://www.nasdaqtrader.com/RPCHandler.axd" req = requests.post(url, json=data, headers=headers) result = req.json()['result'] soup = BeautifulSoup(result, 'html.parser') table = soup.find('table') print(table)验证接口响应
发送请求后,检查req.json()的返回内容,如果result中的HTML是存档页面的表格,说明参数配置正确。如果仍有问题,检查开发者工具中的请求是否包含其他隐藏参数,或者确认cat_id=105是否对应你需要的分类(该ID对应IPO相关存档头条,需与目标页面的分类一致)。
内容的提问来源于stack exchange,提问作者Vpv
相关产品推荐
相关产品推荐

