在scrapy中刮擦json反应

时间:2013-08-21 11:44:30

标签: python json web-scraping scrapy

我一直在学习用scrapy刮页。呈现给我的一些数据是JSON格式的,到目前为止我还无法成功地抓取JSON页面。我知道可以做到(感谢我之前唯一的问题和有用的回答),但我无法让它发挥作用。我想知道是否a)任何人都知道一个成功的JSON scrapy脚本的例子,或者b)我可以请一些指示。

我一直在使用此页面寻求帮助:  http://www.jroller.com/evans/entry/parsing_json_with_python, 试图刮掉用作例子的页面。

我的蜘蛛跑了但没有刮伤。我知道我犯了错误,但我觉得我至少改变了一次spyder的每一个方面,现在让我感到困惑。

我的蜘蛛的基础(根据以下建议编辑)是:

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"]

以抓取页面为例(不是我的数据,只是练习的东西),我一直试图拉出街道地址和纬度/经度,但我尝试过的任何东西似乎都没有用。

1 个答案:

答案 0 :(得分:1)

我认为你错过了导入json.Add

在您的代码中导入json。

同时使用urllib2扩展并打开你的json文件。它会正常工作。 你可以为json响应添加代码,如。

class MySpider(BaseSpider):
    ...   

    def parse(self, response):
         jsonresponse = json.loads(response)

         item = MyItem()
         item["firstName"] = jsonresponse["firstName"]             

         return item

希望这会有所帮助:)