Comment utilisez-vous Scrapy pour supprimer les requêtes Web qui renvoient JSON? Par exemple, le JSON ressemblerait à ceci:
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
Je chercherais à gratter des éléments spécifiques (par exemple name
et fax
dans ce qui précède) et à enregistrer sur csv.
C'est la même chose que d'utiliser HtmlXPathSelector
de Scrapy pour les réponses html. La seule différence est que vous devez utiliser le module json
pour analyser la réponse:
class MySpider(BaseSpider):
...
def parse(self, response):
jsonresponse = json.loads(response.body_as_unicode())
item = MyItem()
item["firstName"] = jsonresponse["firstName"]
return item
J'espère que cela pourra aider.
La raison possible pour laquelle JSON ne se charge pas est qu'il a des guillemets simples avant et après. Essaye ça:
json.loads(response.body_as_unicode().replace("'", '"'))