scrapy抓取json数据后如何正确使用xpath

在scrapy框架抓取某数据接口,返回的json数据如下图:
clipboard.png
需要捕获的数的data里面,所以我一开始是将数据进行解开操作:

一开始是直接使用 respose.xpth()操作,但是定位总算定不准确,明明在firefox使用FirePath插件调试xpath语句都可以正确定位,相当郁闷,所以就猜想是不是数据抓取后要从data里面解放出来再操作html捕获;

那么就尝试对json数据的解开:
str = json.loads(response.body)['data']
但是这样一来,就没办法使用xpath语法,出现以下报错:
clipboard.png

难道说在scrapy框架里面,xpath的使用对象是response数据类型才可以?

你们一般捕获到了json数据后,是如何正确定位html标签的,是不是我漏了什么操作,还是说是有些地方没理解好?

阅读 7.1k
1 个回答

题主拿到html的str内容这个过程没问题,看报错是AttributeError,问题应该是在选择器的使用上。

1、自己导入选择器

 from scrapy.selector import Selector

2、使用Selector的xpath方法获取内容

result = Selector(text=你从json提取出来的str).xpath('你的xpath表达式').extract()

官方文档提到了

更为重要的是,当输入 response.selector 时, 您将获取到一个可以用于查询返回数据的selector(选择器), 以及映射到 response.selector.xpath() 、 response.selector.css() 的 快捷方法(shortcut): response.xpath() 和 response.css() 。

详细可以参考文档:http://docs.pythontab.com/scr...

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进