python - 没有收到来自 url 的响应?
问题描述
另一方面,如果我在 Firefox 中过去了 url,那么它没有url
响应。requests.get
提供url
的是 json 文件的链接。我不知道发生了什么?这是我的代码
from urllib.request import urlopen,Request
import requests
import pprint
import json
import pandas as pd
url = "https://www.nseindia.com/api/option-chain-equities?symbol=ACC"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
response = requests.get(url, headers=headers)
print(response.status_code)
##data_json = json.loads(response.read())
df = pd.read_json(response)
pprint.pprint(df['records'][1])
解决方案
本网站保护自己免受机器人攻击。有很多方法可以检测机器人,其中一些是:
- 请求率
- 禁用的 JavaScript
- 空饼干
- 不使用鼠标单击按钮
- 等等
要启用 javascript 和 cookie,您可以使用selenium
.
您要抓取的网站具有强大的机器人检测方法。我无法访问您共享的链接。但是当我第一次尝试网站主页和之后你的链接时,它显示了 json 文件。但这并不容易制作一个机器人。我尝试了 selenium 并通过移动鼠标单击了网站按钮,但它检测到我是机器人。所以我们可以断定该网站使用了cookies。您需要生成虚假 cookie 才能访问该网页。
推荐阅读
- excel - 为什么在“或”不起作用时“与”在这里起作用?
- javascript - 为什么页脚只停留在幻灯片的第一张幻灯片的底部?
- java - 将小时数添加到包含 00:00:00 的字符串
- django - Wagtail(Django CMS)如何在wagtail中添加单个图像,简单的尝试以“OperationalError no such column:gallery_gallerysubpage.cover_id”结尾
- javascript - JavaScript - 生成数据并间隔刷新
- android - Android VideoView:如何验证我的网址中的非法字符?
- php - 如何在php中检索xml文件子元素值?
- bash - Jenkins 构建输出设置为当前构建描述
- maven - 导入黄瓜.api.DataTable;无法解决
- android - 日期选择器值被添加到动态膨胀编辑文本的最后位置