首页 > 解决方案 > 为什么我无法在某些网站上执行请求获取方法

问题描述

我正在运行以下内容:

import requests
r = requests.get('https://www.nasdaq.com/')
print(r)

它需要很长时间,然后在完成时出现错误。

但是,我打开网络浏览器并进入此站点没有问题。

两个问题:

1.为什么需要永远?我能控制吗

2.为什么会失败?

提前致谢

标签: pythonpython-requests

解决方案


似乎纳斯达克网站正在根据请求的用户代理过滤请求。将 User-Agent 欺骗到 Firefox 使 nasdaq 认为浏览器正在发出请求,并且允许请求​​通过。

import requests
r = requests.get('https://www.nasdaq.com', headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'})
print(r)

输出:

<Response [200]>

请注意,这只会下载页面的根 HTML 页面。它不会运行任何嵌入其中的 JS。所以下载的页面很可能是不完整的。


推荐阅读