一、项目说明1.项目背景一天,一朋友扔给我一个链接https://item.jd.com/100000499657.html,让我看看这个歌商品的所有评论怎么抓取 , 我打开一看,好家伙,竟然有近300万条评论,不是一个小数目啊 。
京东某商品评论
但是仔细一看,原来有234万+的评论是默认好评,还是有少部分是有价值的评价的 。
经过进一步观察 , 可以看到
商品评论翻页
【crdownload文件用什么打开 crdownload】显然,网页中显示的只有100页数据,每页显示10条,通常可以用selenium点击每一页然后获取 , 但是这样效率是不是太低了呢?还是直接用requests来得更直接 , 很多情况下网页显示的数据是请求得到的JSON数据在网页上渲染而显示出来的 , 京东的评论会不会也是这样呢?好 , 说干就干?。。?
2.项目环境这个小项目使用Python爬取 , 不需要太多的配置,只需要安装requests库就足够 ,我相信对于很多玩爬虫的小伙伴来说这个库肯定是必备的,没装requests不要告诉我你会爬虫。
二、项目实施1.项目分析上面说到,网页中的数据很多都是通过渲染请求到的JSON数据得到的,那么我们就来看看京东是不是也是这样的 。利用浏览器的审计工具,选择Network栏,可以看到
商品评论总体概况
仔细查看,寻找链接中于评论(comment)有关的链接,可以找到其中的一个请求链接https://club.jd.com/comment/productCommentSummaries.action?referenceIds=100000499657&callback=jQuery1951081&_=1586669401777,如上图 。这是关于该商品评论的整体情况的,可以看到具体的总评论数、默认好评数、好评数、好评率等 , 虽然不是我们想要的 , 但是也近了一步,继续寻找,又找到了一条带comment字眼的链接https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100000499657&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1,如图
评论详情概览
后边有10条评论,应该就是该商品对应的第一页评论了,点开查看,如下:
评论数据详情
对比网页中显示的评论可以看到,这就就是我们要找的东西 。
由于得到的数据不是标准格式的JSON,所以我选择使用正则表达式来获取相关的内容 。
现在还有一个问题,我们只获得了1页评论 , 那怎么获取所有的评论呢?会不会秘密隐藏在链接中呢?
对于链接https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100000499657&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1 , 显然有很多参数,不难找到,有参数productId和page,如果猜得不错,应该是商品id和评论页数(从0开始),这时,换一个商品id , 那么商品id怎么获得呢?举个例子 , 在链接https://item.jd.com/100000499657.html中,商品id就是100000499657 。另找一个商品,将其商品id替换掉评论链接中的productId,获得的正是该商品的第一页评论 。现在尝试翻页,逐渐增大page参数的值 , 如1、2、3…,也能获取到对应页的评论数据 。
现在分析工作已经做的差不多了,可以开始码代码了 。
推荐阅读
- 石墨烯电池冬天耐用吗 电瓶车石墨烯电池冬天耐用吗
- 全球公认最好用的10大素颜霜 素颜霜和粉底液的区别
- 你拨打的用户已启动通讯助理漏话提醒是什么意思
- 哈尔滨极地馆儿童不到120用买票吗?
- 方舟麻醉药怎么涂弓箭上 方舟麻醉剂怎么用在弓箭上
- 房屋抵押贷款的用途和要求包括有哪些
- 手机卡几个月不用会自动注销 电信手机卡几个月不用会自动注销
- 为啥停了一次电WiFi不能用了,停了电wifi不能用了怎么回事
- 手机不能打电话了怎么回事 电话停机怎么恢复使用
- 手机怎么制作pdf文件 手机文件怎么打印出来