Scrapy解析JSON输出

4

我正在使用Scrapy爬取一个网站。一些页面使用AJAX,所以我获取了AJAX请求来获取实际数据。到目前为止还不错。这些AJAX请求的输出是JSON格式。现在我想解析JSON,但是Scrapy只提供HtmlXPathSelector。是否有人成功地将JSON输出转换为HTML,并能够使用HtmlXPathSelector进行解析?

非常感谢您的帮助。


你不想将 JSON 转换为 HTML。你能给我们一个 JSON 响应的样例吗? - Steven Almeroth
2个回答

5
import json

response = json.loads(jsonResponse)

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

(将jsonResponse替换为从ajax请求获取的JSON)


0

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

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

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

安装dicttoxml包(建议使用pip)

-使用scrapy的传统Request模块下载输出

在爬虫中:

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都维护在一个地方(配置文件)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接