【发布时间】:2022-01-05 01:07:30
【问题描述】:
我正在尝试运行此代码:
import requests
import json
print(requests.__version__)
print(json.__version__)
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Host': 'www.soraredata.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'Accept-Language': 'en-GB,en;q=0.9',
'Referer':'https://www.soraredata.com/player/17512868900934537680021886
28460549415375229654518317941780411003457747672993',
'Connection': 'keep-alive',
}
req = requests.Request('GET',
'https://www.soraredata.com/api/players/info/
1751286890093453768002188628460549415375229654518317941780411003457747672993',
headers=headers)
resp = requests.Session().send(req.prepare())
print(resp.status_code)
在 programiz.com 上工作正常,状态码为 200。
但它在我的 PC 上不起作用,即使代码相同,甚至包版本相同。我什至尝试了不同的 python 版本,但没有成功。
我不明白为什么它不返回 200。我希望有人能照亮我。 感谢您提供的任何帮助。
【问题讨论】:
-
我忘了说明我试图在 windows 机器上运行它,但即使在我的 linux 上它也不起作用
-
代码相同,但计算机不同 - 具有不同的 IP、不同的信誉(某些服务器可能使用
blacklists阻止某些计算机的访问)。有些服务器可能有复杂的方法来检测机器人/脚本。首先你可以检查你在resp.text中得到了什么——也许你会得到解释一切的消息。它可能需要 JavaScript 或其他东西,或者它可能会要求您回答 Captcha。 -
soraredata api 的文档建议您需要进行身份验证,并且您的代码似乎不包含任何身份验证。我不确定为什么它在 programiz 上工作。
-
我在我的 Linux 上运行它,它可以工作。
-
即使我删除了 Session 和标头,它也对我有用。
标签: python json web-scraping python-requests