2013-04-09 216 views
4

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

非常感谢你提前

+0

你不想将JSON转换为HTML。你能给我们一个JSON响应的例子吗? – 2013-04-09 22:06:50

回答

5
import json 

response = json.loads(jsonResponse) 

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

0

稍微复杂,仍然工作(与您从Ajax请求得到JSON更换jsonResponse)。

如果你有兴趣与JSON输出的XPath工作..

免责声明:可能不是最优的SOLN。 +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所有的蜘蛛在一个地方(配置文件)