纳斯达克网页的“request.get()”没有响应

问题描述

我可以通过浏览器打开此 url 并查看 json 格式的响应。但是,当我使用 requests 模块时,该方法没有响应。

import requests
response = requests.get('https://api.nasdaq.com/api/calendar/earnings?date=2021-02-23')

这里出了什么问题?

解决方法

这对我有用:

url = 'https://api.nasdaq.com/api/calendar/earnings?date=2021-02-23'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/75.0.3770.142 Safari/537.36'}

response = requests.get(url,headers=headers)

说明

该站点正在阻止来自 python 的请求。参考说明here

,

添加在 chrome 中检查元素时出现的查询头时,请求在 python 中运行良好:

import requests
response = requests.get('https://api.nasdaq.com/api/calendar/earnings?date=2021-02-23',headers={"authority":"api.nasdaq.com","scheme":"https","path":"/api/calendar/earnings?date=2021-02-23","pragma":"no-cache","cache-control":"no-cache","accept":"application/json,text/plain,*/*","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.182 Safari/537.36","origin":"https://www.nasdaq.com","sec-fetch-site":"same-site","sec-fetch-mode":"cors","sec-fetch-dest":"empty","referer":"https://www.nasdaq.com/","accept-encoding":"gzip,deflate,br","accept-language":"en-US,en;q=0.9,es;q=0.8,nl;q=0.7"})