/ / Warum bekomme ich diesen JSONDecodeError? - Python, Json

Warum bekomme ich diesen JSONDecodeError? - Python, Json

Ich verwende den folgenden Code, um eine XHR-Anfrage an eine Website zu senden und die verschachtelte Liste zurückzugeben, in der die gewünschten Daten enthalten sind:

import requests

url = "http://www.whoscored.com/stagestatfeed/9155/stageteams/"
url = str("".join(url[0:3]))
params = {
"against": "0",
"field": "0",
"teamId": "-1",
"type": "8"
}

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)

responser = responser.json()
print responser

Ich erhalte jedoch die folgende Fehlermeldung:

simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 7 (char 6)

Der zurückgegebene Artikel scheint JSON zu sein, daher bin ich nicht sicher, warum ich diesen Fehler erhalte.

Kann jemand helfen?

Vielen Dank

Antworten:

2 für die Antwort № 1

Benutzen JSONLint Um zu bestätigen, dass es wirklich JSON ist, da es "s" istwahrscheinlich nicht. JSONlint sagt Ihnen, wo genau der Fehler liegt. Ich habe diese "Analyse" unterhalb der Linie angewendet (lesen Sie nicht weiter, wenn Sie von hier an die Lösung selbst finden möchten):


Die zurückgegebene JSON ist ungültig, da für Strings einfache Anführungszeichen verwendet werden. JSON erlaubt nur doppelte Anführungszeichen:

JSON-Zeichenfolge

Alle ersetzen " mit " funktioniert:

import requests
import json

url = "http://www.whoscored.com/stagestatfeed/9155/stageteams/"
#url = str("".join(url[0:3]))
params = {
"against": "0",
"field": "0",
"teamId": "-1",
"type": "8"
}

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 json.loads(responser.text.replace(""", """))