Я научился царапать страницы с помощью scrapy. Некоторые из представленных мне данных находятся в формате JSON, и я до сих пор не смог скрестить страницу JSON. Я знаю, что это можно сделать (благодаря моему только предыдущему вопросу и полезным ответам), но я просто не могу заставить его работать. Мне интересно, если: а) кто-нибудь знает пример успешного сценария скрининга для JSON, или б) я мог бы иметь некоторые указатели.соскабливание ответа json в scrapy
Я воспользовался этой страницей за помощью: http://www.jroller.com/evans/entry/parsing_json_with_python, , пытающийся очистить страницу, используемую в качестве примера на ней.
Мой паук бежит, но ничего не царапается. Я знаю, что делаю ошибки, но мне кажется, что я изменил каждый маленький аспект шпидера хотя бы один раз, и теперь я просто смутился.
Основу моего паука (изданного в ответ на предложение ниже) заключается в следующем:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from learnjson.items import learnjsonitems, Field
import json
import urllib2
class MySpider(BaseSpider):
name = "jsonexample"
allowed_domains = ["googleapis.com"]
req = urllib2.urlopen('http://maps.googleapis.com/maps/api/geocode/json?address=8-10%20Broadway,%20London%20SW1H%200BG,%20United%20Kingdom&sensor=false'
)
def json_parse(self, response):
jsonresponse = json.loads(response.body_as_unicode())
latitude = jsonresponse["lat"]
print item["lat"]
Принимая пример страницы, которая Царапины (не мои данные, только что-то практиковать на), я был пытаясь вытащить, скажем, уличный адрес и широту/долготу, но я ничего не пробовал, кажется, работает.
также вы можете использовать JSON ответ для извлечения данных, как класс MySpider (BaseSpider): ... Защиту синтаксического анализа (самоощущение, ответ): jsonresponse = json.loads (ответ) пункт = MyItem() пункт [ "FirstName"] = jsonresponse [ "FirstName"] возвращенный деталь – Tushar
Большое спасибо за ваше предложение, но я пытался сделать, как вы предложили, и все еще царапины ничего. Я отредактировал мое сообщение, чтобы показать новый паук - я уверен, что делаю небольшую/простую ошибку, но я не могу ее найти! –
'response = json.loads (jsonResponse)' Заменить 'jsonResponse' с json, который вы получаете – Tushar