当前位置: 首页 > 面试题库 >

XHR请求URL表示尝试解析其内容时不存在

南宫星波
2023-03-14
问题内容

在使用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请求相关,当您从此页面上的主表的“总体”选项卡切换到“主页”选项卡时,将提交该XHR请求

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

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

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

谢谢


问题答案:

您有几个问题:

  • 网址应该是 http://www.whoscored.com/stageplayerstatfeed
  • GET参数错误
  • 缺少重要的必需标头
  • 你需要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,
        ...
    },
    ...
]


 类似资料:
  • 问题内容: 如何在Scrapy 函数中获取请求网址?我有很多网址,其中一些将我的蜘蛛重定向到主页,结果我有一个空项目。所以我需要一些类似的东西来存储这些URL。我正在使用BaseSpider。 问题答案: 传递给parse()的’response’变量具有所需的信息。你不需要覆盖任何内容。 例如。(编辑)

  • 不幸的是,使用JSONP模块的服务使用明显不同的类来模拟后端。 类用于此场景。

  • 我试图解决以下问题: 使用RecyclerView 我尝试使用下面的代码,问题是它不起作用,我没有发现任何工作示例没有提到在方向改变时重新绘制。

  • 我的源提供商向我发送。gz文件(zip文件)通过POST请求发送到我的服务器。 我试图实现。NET代码将拦截POST请求并解压缩文件以打开里面的文件。 我只是想截取POST请求并解压缩内容,这样做: 它返回415 Unsupport tedMediaType。 如何截获POST请求,这是一个ZIP文件,以及如何解压缩它以返回其中的文件? 谢谢你。 编辑:

  • 我使用的是这里给出的g4 json语法: 我使用以下命令生成*.py文件(lexer、parser和listener):

  • 问题内容: 我正在尝试使用Python和请求库登录网站以进行某些抓取,但我正在尝试以下操作(无效): 但是,nada,重定向到登录页面。我需要打开一个会话吗?我执行了错误的POST请求,是否需要加载cookie?还是会话会自动执行?我在这里迷路了,需要一些帮助和解释。 我要登录的网站是php,我是否需要“捕获set- cookie并设置cookie标头”?如果是这样,我不知道该怎么做。该网页是具有