使用Python requests下载纳斯达克上市列表JSON文件请求卡住如何解决
纳斯达克API请求无响应解决方案
问题原因
- 纳斯达克官方API配置了反爬校验规则,会拦截请求头
User-Agent为python-requests的爬虫请求,服务端收到不符合要求的请求后不会返回响应,导致程序永久挂起。浏览器可以正常访问是因为浏览器发送的请求自带了标准浏览器的UA标识,能通过服务端校验。 - 原代码没有配置超时参数,被拦截后会进入无限等待状态。
修复后代码
import requests url = "https://api.nasdaq.com/api/screener/stocks?tableonly=true&limit=25&offset=0&download=true" # 伪造Chrome浏览器请求头 headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5; rv:109.0) Gecko/20100101 Firefox/116.0" } # 增加10秒超时配置,异常场景自动中断 resp = requests.get(url, headers=headers, timeout=10) # 校验请求是否成功 resp.raise_for_status() # 解析获取JSON数据 stock_data = resp.json()
补充说明
- 可自行修改URL中的
limit参数调整单次返回的股票条目数量,最大支持单次拉取全量上市股票数据 - 若后续高频请求被限制,可适当增加请求间隔时间,避免触发IP限流规则
内容的提问来源于stack exchange,提问作者user15570578
相关产品推荐
相关产品推荐

