Scrapy解析JSON输出

时间:2013-04-09 19:17:33

标签: python json scrapy

我正在使用scrapy来抓取网站。有些页面使用AJAX,所以我得到了AJAX请求来获取实际数据。到现在为止还挺好。这些AJAX请求的输出是JSON输出。现在我想解析JSON但是scray只提供了HtmlXPathSelector。有没有人成功地将json输出转换为html并能够使用HtmlXPathSelector解析它?

非常感谢你

2 个答案:

答案 0 :(得分:5)

import json

response = json.loads(jsonResponse)

上面的代码将解码您收到的json。之后,您应该能够以任何方式处理它。

(将jsonResponse替换为您从ajax请求获得的json)

答案 1 :(得分:0)

稍微复杂一点,仍然有效。

如果您对在JSON输出上使用xpath感兴趣..

免责声明:可能不是最佳解决方案。如果某人改进了这种方法,请+1。

安装dicttoxml软件包(推荐pip)

- 使用scrapy的传统请求模块

下载输出 蜘蛛中的

from scrapy.selector import XmlXPathSelector
import lxml.etree as etree

request = Request(link, callback=self.parse_resp)
yield request

def parse_resp(self,response):
     json=response.body
     #Now load the contents using python's JSON module
     json_dict = json.loads(json)
     #transform the contents into xml using dicttoxml
     xml = dicttoxml.dicttoxml(json_dict)
     xml = etree.fromstring(xml)
     #Apply scrapy's XmlXPathSelector module,and start using xpaths
     xml = XmlXPathSelector(text=xml)
     data = xml.select(".//*[@id='count']/text()").extract()
     return data

我这样做是因为我在一个地方维护所有蜘蛛的所有xpath(配置文件)