python - 为什么我无法在某些网站上执行请求获取方法
问题描述
我正在运行以下内容:
import requests
r = requests.get('https://www.nasdaq.com/')
print(r)
它需要很长时间,然后在完成时出现错误。
但是,我打开网络浏览器并进入此站点没有问题。
两个问题:
1.为什么需要永远?我能控制吗
2.为什么会失败?
提前致谢
解决方案
似乎纳斯达克网站正在根据请求的用户代理过滤请求。将 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。所以下载的页面很可能是不完整的。
推荐阅读
- java - 可执行 .jar 未运行 JavaFX - Ecliipse
- vb.net - 使用 IEnumerable 返回字符串的所有可能性
- java - turnRight 方法在组合锁程序中不起作用 - java
- c# - 从控制台应用程序创建/更新数据库模式
- javascript - jQuery.html() 函数不保留动态 DOM 中的选择和输入中的值
- python - 正则表达式 python - 仅当换行符后跟数字或特殊字符和空格时才匹配换行符
- swift - Swift IBDesignable UIButton 类 - 在 didRotate 上更改宽度
- python - 使用 SetParent win32gui 函数将 ffplay 窗口嵌入到 tkinter 框架中
- javascript - 点击事件在我的地图功能中不起作用
- haskell - 无特定原因的稳定名称更改