scrapy获得的response是json格式数据时怎么从中提取信息?

已解决,代码如下:

jsobj = json.loads(response.body)
comment = jsobj['comment']
print(comment)

——————————————————————————————

爬虫新手,学习scrapy抓取到的Ajax方式加载的页面(部分)。
不知道放链接会不会违规,就放了部分json数据。

{"ok":true,"comment":"<div cid=\"5a0d4892030235aa7eae9974\" class=\"col-sm-6 col-lg-4 col-xs-12 needmasonry isnew\"><div class=\"thumbnail\"><div class=\"caption\"><div data-cid=\"5a0d4892030235aa7eae9974\" class=\"media clearfix\"><a href=\"/user/807836/comments\" target=\"_blank\" class=\"pull-left\"><img src=\"http://img.lkong.cn/avatar/000/80/78/36_avatar_small.jpg\" onerror=\"this.src='http://img.lkong.cn/avatar/noavatar_small.png';this.onerror=null;\" class=\"img-rounded\"/></a><div class=\"media-body\"><span class=\"media-heading\">paweika</span><br/><span class=\"small\">2017/11/16 16:13         </span></div></div><p class=\"commentcontent\">XXX\r\n<br>xxxXXXXX </p><hr/><div data-cid=\"5a0d4892030235aa7eae9974\" style=\"width:100%\" class=\"btn-group\"><button type=\"button\" onclick=\"ys.common.loveonecomment(this)\" style=\"width:50%\" class=\"btn btn-default\"> <i class=\"fa fa-heart-o\"></i>&nbsp;喜欢 <span class=\"num\"> 2  </span></button><button type=\"button\" onclick=\"ys.common.viewOneComment('5a0d4892030235aa7eae9974')\" style=\"width:50%\" class=\"btn btn-default\"> <i class=\"fa fa-reply\"></i>&nbsp;评论<span class=\"num\"> </span></button></div></div></div></div><div cid=\"5a16f1060077cebc7ed4a4ea\" class=\"col-sm-6 col-lg-4 col-xs-12 needmasonry isnew\"><div class=\"thumbnail\"><div class=\"caption\"><div data-cid=\"5a16f1060077cebc7ed4a4ea\" class=\"media clearfix\"><a href=\"/user/962403/comments\" target=\"_blank\" class=\"pull-left\"><img src=\"http://img.lkong.cn/avatar/000/96/24/03_avatar_small.jpg\" onerror=\"this.src='http://img.lkong.cn/avatar/noavatar_small.png';this.onerror=null;\" class=\"img-rounded\"/></a><div class=\"media-body\"><span class=\"media-heading\">XXXX</span><br/><span class=\"small\">2017/11/24 00:02         </span></div></div><p class=\"commentcontent\">XXXXXXXXXXX </p><hr/><div data-cid=\"5a16f1060077cebc7ed4a4ea\" style=\"width:100%\" class=\"btn-group\"><button type=\"button\" onclick=\"ys.common.loveonecomment(this)\" style=\"width:50%\" class=\"btn btn-default\"> <i class=\"fa fa-heart-o\"></i>&nbsp;喜欢 <span class=\"num\"> 1  </span></button><button type=\"button\" onclick=\"ys.common.viewOneComment('5a16f1060077cebc7ed4a4ea')\" style=\"width:50%\" class=\"btn btn-default\"> <i class=\"fa fa-reply\"></i>&nbsp;评论<span class=\"num\"> 3   </span></button></div></div></div></div><div cid=\"5a0da2be833f95967e250d6f\" class=\"col-sm-6 col-lg-4 col-xs-12 needmasonry isnew\"><div class=\"thumbnail\"><div class=\"caption\"><div data-cid=\"5a0da2be833f95967e250d6f\" class=\"media clearfix\"><a href=\"/user/687106/comments\" target=\"_blank\" class=\"pull-left\"><img src=\"http://img.lkong.cn/avatar/000/68/71/06_avatar_small.jpg\" onerror=\"this.src='http://img.lkong.cn/avatar/noavatar_small.png';this.onerror=null;\" class=\"img-rounded\"/></a><div class=\"media-body\"><span class=\"media-heading\">XXXXX</span><br/><span class=\"small\">2017/11/16 22:37         </span></div></div><p class=\"commentcontent\">XXXXXXXX </p><hr/><div data-cid=\"5a0da2be833f95967e250d6f\" style=\"width:100%\" class=\"btn-group\"><button type=\"button\" onclick=\"ys.common.loveonecomment(this)\" style=\"width:50%\" class=\"btn btn-default\"> <i class=\"fa fa-heart-o\"></i>&nbsp;喜欢 <span class=\"num\"> 15  </span></button><button type=\"button\" onclick=\"ys.common.viewOneComment('5a0da2be833f95967e250d6f')\" style=\"width:50%\" class=\"btn btn-default\"> <i class=\"fa fa-reply\"></i>&nbsp;评论<span class=\"num\"> </span></button></div></div></div></div><div cid=\"5a19cea615173cd97ea4cd26\" class=\"col-sm-6 col-lg-4 col-xs-12 needmasonry isnew\"><div class=\"thumbnail\"><div class=\"caption\"><div data-cid=\"5a19cea615173cd97ea4cd26\" class=\"media clearfix\"><a href=\"/user/855941/comments\" target=\"_blank\" class=\"pull-left\"><img src=\"http://img.lkong.cn/avatar/000/85/59/41_avatar_small.jpg\" onerror=\"this.src='http://img.lkong.cn/avatar/noavatar_small.png';this.onerror=null;\" class=\"img-rounded\"/></a><div class=\"media-body\"><span class=\"media-heading\">XXXXXXXX</span><br/><span class=\"small\">2017/11/26 04:12   

这个是获取到的一页中的部分json格式的数据,自己使用xpath提取信息时各种意外,如:

这xpath语句只能获取一条信息:

item = response.xpath('string(//span)').extract()

还有定位不到的问题。

请问各位前辈,这种所有内容全在一个{}中的json数据该怎么提取信息呢?

还可以像xml文件那样使用for循环遍历标签吗?

请知道处理办法的前辈指点迷津。深夜感谢!感谢!

阅读 14.1k
1 个回答

python有一个内置的json模块。直接import json然后x=json.loads(response_str)

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