gpt4 book ai didi

python - XHR 请求 URL 在尝试解析其内容时说不存在

转载 作者:太空狗 更新时间:2023-10-30 00:44:44 27 4
gpt4 key购买 nike

在我使用 Scrapy 为我的问题构建一个完整的解决方案之前,我发布了一个我想做的事情的简单版本:

import requests

url = 'http://www.whoscored.com/stageplayerstatfeed/?field=1&isAscending=false&orderBy=Rating&playerId=-1&stageId=9155&teamId=32"'

params = {'d': date.strftime('%Y%m'), 'isAggregate': 'false'}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'}

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

fixtures = response.body
#fixtures = literal_eval(response.content)
print fixtures

此代码表示上述 URL 不存在。该 URL 与您从本页主表的“总体”选项卡切换到“主页”选项卡时提交的 XHR 请求相关:

http://www.whoscored.com/Teams/32/

如果您在 Google Developer Tools 的控制台中激活 XHR 日志记录,您可以看到 XHR 请求和服务器以字典形式发送的响应(这是预期的格式)。

谁能告诉我为什么上面的代码没有返回我期望看到的数据?

谢谢

最佳答案

你有几个问题:

  • 网址应为 http://www.whoscored.com/stageplayerstatfeed
  • 错误的 GET 参数
  • 缺少重要的必需 header
  • 你需要response.json(),而不是response.body

固定版本:

import requests

url = 'http://www.whoscored.com/stageplayerstatfeed'
params = {
'field': '1',
'isAscending': 'false',
'orderBy': 'Rating',
'playerId': '-1',
'stageId': '9155',
'teamId': '32'
}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
'Host': 'www.whoscored.com',
'Referer': 'http://www.whoscored.com/Teams/32/'}

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

fixtures = response.json()
print fixtures

打印:

[
{
u'AccurateCrosses': 0,
u'AccurateLongBalls': 10,
u'AccuratePasses': 89,
u'AccurateThroughBalls': 0,
u'AerialLost': 2,
u'AerialWon': 4,
...
},
...
]

关于python - XHR 请求 URL 在尝试解析其内容时说不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com