【问题标题】:Python scraping XHR returns ValueError: Too many values to unpackPython 抓取 XHR 返回 ValueError: Too many values to unpack
【发布时间】:2016-11-05 09:34:06
【问题描述】:

因此,出于教育目的,我编写了这段代码来抓取该网页的“详细”标签:https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/5826/Stages/12496/TeamStatistics/England-Premier-League-2015-2016

但是它给了我一个值错误:解包的值太多。

我仍然是 Python 的初学者,所以我无法弄清楚为什么会出现这种情况。

import requests


url = 'https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/5826/Stages/12496/TeamStatistics/England-Premier-League-2015-2016'

params = {
'category:shots',
'subcategory:zones',
'statsAccumulationType:0',
'timeOfTheGameStart:0',
'timeOfTheGameEnd:5',
'stageId:12496',
'sortBy: Rating', 
'page: 1',
'isCurrent: True'
}

headers = {
        'User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
        'X-Requested-With: XMLHttpRequest',
        'Host: www.whoscored.com'
        'Referer: https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/5826/Stages/12496/TeamStatistics/England-Premier-League-2015-2016',}

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

stats = response.json()
print stats

【问题讨论】:

    标签: python python-2.7 web-scraping python-requests


    【解决方案1】:

    您错误地定义了params - 目前它实际上是一组字符串。分解字符串以生成键值对并改为创建字典:

    params = {
        'category': 'shots',
        'subcategory': 'zones',
        'statsAccumulationType': '0',
        'timeOfTheGameStart': '0',
        'timeOfTheGameEnd': '5',
        'stageId': '12496',
        'sortBy': 'Rating',
        'page': '1',
        'isCurrent': 'True'
    }
    

    headers 也是如此:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest',
        'Host': 'www.whoscored.com',
        'Referer': 'https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/5826/Stages/12496/TeamStatistics/England-Premier-League-2015-2016'
    }
    

    这将有助于修复错误,但您不会按原样获得 JSON 响应。我怀疑您使用的 url 不是正确的,请重新检查。

    此外,如果您想模拟您在 Chrome 开发者工具中观察到的请求 - 请执行以下操作:

    【讨论】:

    • 谢谢,我知道我又忘记了一些愚蠢的事情:)。但是现在我得到了 ValueError: No JSON object could be decoded。我尝试了不同的网址。
    • 我尝试了编辑中描述的方法,但我仍然遇到同样的错误
    • 现在我收到响应 200,表明它是 JSON,对吗?但是每当我执行 variable = response.json() 时,我都会得到“无法解码 JSON 对象”
    • @GrandaddyOG 您能否创建一个单独的问题,专门针对您目前提供的完整代码所遇到的最后一个问题?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 2019-02-01
    • 1970-01-01
    • 2014-03-31
    • 2020-04-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多