爬虫系列——使用scrapy爬取京东的商品以及评论信息

需求:根据某个关键词,这里以“spark”为例,在京东搜索页面进行输入,然后爬取搜索的商品结果,对某一个商品进入详情页面,爬取商品的评论信息!

以关键字”spark”进行搜索,拿到搜索页的url地址:

https://search.jd.com/Search?keyword=spark&enc=utf-8&suggest=1.rem.0.T00&wq=spark&pvid=5b4c9c5880184033b4174b73d0826d32

通过精简后,发现下面的地址也可以拿到,请求url地址为:

https://search.jd.com/Search?keyword=spark

查看下一页的链接,发现是一个js实现的,无法直接获取到,如下图:

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 下一页是一个js调用

点击链接,通过url查看地址变成了:

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》
《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 查看点击的时候url变化

第二页的时候,page变成了3,第三页的时候,page变成了5,由此推导出page = 1 + (实际页数-1)* 2

直接访问地址https://search.jd.com/Search?keyword=spark&page=3一样拿到了结果信息,所以可实现自己拼接url来爬取数据啦!通过定位商品,点击检查,查看页面信息如下:

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 每个商品是一个li

好了,编写爬虫的方法,这里还是通过xpath进行定位咯,xpath方便简单,没用过的直接百度啦!

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 spider的parse方法

商品爬取结束,通过pipeline保存到mysql数据库,这个已经在上一节讲过啦。地址(http://www.jianshu.com/p/f4d6e235a924),直接看数据库的结果:

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 商品信息

好了,爬取商品完毕,下面看看某一个商品的全部评论如何获取呢?点击到商品详情页面,以地址https://item.jd.com/11782888.html#comment为例,依然打开浏览器,找到评论的地方,选择检查,就可以定位到源码啦,如下图:

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 评论信息

如图所示,评论信息是一个个comments-item,那么还是直接通过xpath来定位吧,重点是下一页,这时候当我们点击下一页的时候,发现url并没有什么明显的变化了,那么在页面按f12,看后台悄悄做了什么,看到通过js发送了后台请求:

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 js请求

复制出来对应的url,直接在浏览器请求,一样得到了结果,所以直接请求对应的地址就好啦,去掉地址中无用的参数:

https://sclub.jd.com/comment/productPageComments.action?productId=11782888&score=0&sortType=3&page=1&pageSize=10

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 请求结果

并且通过请求发现,返回的是一个json对象,所以直接解析json,并对url进行下一页的拼接,就可以拿到所有评论啦!

《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 主要的逻辑类
《爬虫系列——使用scrapy爬取京东的商品以及评论信息》 评论结果

    原文作者:海贼王_浩
    原文地址: https://www.jianshu.com/p/ce8cc64c091a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞