为什么我使用请求获取此xpath错误?

时间:2014-11-25 22:10:09

标签: python json xmlhttprequest python-requests

我正在使用以下代码来模仿和XHR请求,并且我得到一个xpath错误,即生成的URL和参数无效,尽管它们看起来都很好:

import json
import requests
import jsonobject
import simplejson

url = 'http://www.whoscored.com/StatisticsFeed/1/GetPlayerStatistics'
params = {
            'category': 'shots',
            'subcategory': 'situations',
            'statsAccumulationType': '0',
            'isCurrent': 'true',
            'playerId': '',
            'teamIds': '',
            'matchId': '',
            'stageId': '9155',
            'tournamentOptions': '2',
            'sortBy': 'Rating',
            'sortAscending': '',
            'age': '',
            'ageComparisonType': '',
            'appearances': '',
            'appearancesComparisonType': '0',
            'field': '',
            'nationality': '',
            'positionOptions': '%27FW%27,%27AML%27,%27AMC%27,%27AMR%27,%27ML%27,%27MC%27,%27MR%27,%27DMC%27,%27DL%27,%27DC%27,%27DR%27,%27GK%27,%27Sub%27',
            'timeOfTheGameEnd': '5',
            'timeOfTheGameStart': '0',
            'isMinApp': '',
            'page': '1',
            'includeZeroValues': '',
            'numberOfPlayersToPick': '10'
            }

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/'}

responser = requests.get(url, params=params, headers=headers)
print responser.status_code
print responser.url
responser = responser.json()
print responser

使用开发人员工具,我抓住了xhr请求组成的屏幕截图,如下图所示:

enter image description here

任何人都可以看到我的代码明显错误吗?即使只是一个错字?

由于

2 个答案:

答案 0 :(得分:1)

这最终对我有用:

import json
import requests

url = 'http://www.whoscored.com/StatisticsFeed/1/GetPlayerStatistics'
params = {
            'category': 'shots',
            'subcategory': 'situations',
            'statsAccumulationType': '0',
            'isCurrent': 'true',
            'playerId': '',
            'teamIds': '',
            'matchId': '',
            'stageId': '9155',
            'tournamentOptions': '2',
            'sortBy': 'Rating',
            'sortAscending': '',
            'age': '',
            'ageComparisonType': '',
            'appearances': '',
            'appearancesComparisonType': '0',
            'field': '',
            'nationality': '',
            'positionOptions': "'FW','AML','AMC','AMR','ML','MC','MR','DMC','DL','DC','DR','GK','Sub'",
            'timeOfTheGameEnd': '5',
            'timeOfTheGameStart': '0',
            'isMinApp': '',
            'page': '1',
            'includeZeroValues': '',
            'numberOfPlayersToPick': '10'
            }

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/'}

responser = requests.get(url, params=params, headers=headers)
print responser.status_code
print responser.url
responser = responser.json()
print responser

答案 1 :(得分:0)

根据您的评论,您获得的错误网址为http://www.whoscored.com/Error.html?aspxerrorpath=/StatisticsFeed/1/GetPlayerStatistics%27

该错误页面的内容说:

  

我们目前无法回复您,但我们很快就会回复。

     

请尽快再次查看我们,感谢您的耐心等待。

     

WhoScored.com

当我测试你的代码时,我得到了同样的错误。当我将相同的URL粘贴到浏览器中时,我得到了同样的错误。

该错误消息中没有关于xpath的内容。问题似乎是服务器暂时无法正常工作。如果是这样,您的代码中无法解决问题。