如何获取雪球美股财务数据接口URL返回的JSON数据?
问题原因
这个接口触发了雪球的访问权限校验,必须先访问对应个股的详情页,获取平台下发的有效cookies后,再请求接口才能正常拿到数据,直接访问接口会被拦截。
解决方法
方法1:使用requests库实现
流程为先请求个股详情页拿到有效cookies,再携带cookies和完整请求头调用目标接口,示例代码如下:
import requests # 先初始化会话,自动保存cookies session = requests.Session() # 设置统一的请求头,尽量和浏览器保持一致 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://xueqiu.com/" } session.headers.update(headers) # 第一步:先访问个股详情页,获取有效cookies detail_url = "https://xueqiu.com/snowman/S/ASX/detail#/GSLRB" session.get(detail_url) # 第二步:携带会话中的cookies请求目标接口 target_url = "https://stock.xueqiu.com/v5/stock/finance/us/income.json?symbol=ASX&type=all&is_detail=true&count=5" resp = session.get(target_url) # 打印返回的JSON数据 print(resp.json())
方法2:使用selenium库实现
按照测试的逻辑,先访问详情页等待cookies生成,再跳转接口地址即可,示例代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time options = webdriver.ChromeOptions() # 可加无头模式参数后台运行 # options.add_argument("--headless=new") options.add_argument("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") browser = webdriver.Chrome(options=options) try: # 先访问详情页,等待2秒让cookies下发完成 detail_url = "https://xueqiu.com/snowman/S/ASX/detail#/GSLRB" browser.get(detail_url) time.sleep(2) # 再跳转目标接口地址 target_url = "https://stock.xueqiu.com/v5/stock/finance/us/income.json?symbol=ASX&type=all&is_detail=true&count=5" browser.get(target_url) print(browser.page_source) finally: browser.quit()
注意事项
- 请求频率不要过高,避免触发平台的反爬封禁
- User-Agent尽量和本地浏览器的UA保持一致,降低被识别的概率
内容的提问来源于stack exchange,提问作者showkey
相关产品推荐
相关产品推荐

