我只是想知道当网站向我发送json响应而不是html时如何制定规则?在开始url第一个响应时,它给了我一个html响应,但是当我浏览页面时,它给了我json响应。我的规则在这里:
Rule(SgmlLinkExtractor(restrict_xpaths=('//div[@class="GridTimeline-items"]'), tags=('div'),
attrs=('data-min-position'), allow=(r''), process_value=my_process_value_friends),
callback='parse_friends', follow=True),
我的问题是,如何在json响应中应用xpath?
谢谢,
答案 0 :(得分:0)
您无法使用xpath或css选择器解析json。然而,您可以将json转换为python字典:
import json
def parse(self, response):
data = json.loads(response.body)
# then just parse it, e.g.
item = dict()
item['name'] = data['name']
# ...
或者你可以将json转换为xml,然后用scrapy选择器解析它。有很多软件包可以做到这一点但我会在我的示例中突出显示dicttoxml
:
import json
from dicttoxml import dicttoxml
from scrapy import Selector
def parse(self, response):
data = json.loads(response.body)
data_xml = dicttoxml(data)
sel = Selector(root=data_xml)
# then parse it
item = dict()
item['name'] = sel.xpath("//name/text()")
# ...