自从上次写了一篇教师节送什么?Python教你挑选礼物,让我对淘宝的其他信息产生了产生了很大的兴趣,所以,利用中秋节假期研究了下怎么爬取淘宝商品评价。
由于淘宝现在的反爬机制不断增强,接口API发生了变化,网上的写的爬取淘宝评价的教程都无法使用,给我实现项目带来了很多不便,但好在经过自己的不断摸索,终于实现了功能。
本文实现难点:
一、分析数据包,找到淘宝评论传输用的网址,分析网址特点;
二、获取谷歌浏览器的控制台cookie;
三、如何从找到的数据包中,从json格式内容中得到想要的数据。
本文实现项目的优点:
一、不用难懂的正则表达式也能爬取信息;
二、可以根据自己的需求爬取某个商品所有的评价信息;
三、代码实现比较简单;
四、本文应该是最新的爬取淘宝商品评价的教程了。
案例
网址如下:
https://detail.tmall.com/item.htm?id=38975978198&ali_refid=a3_430582_1006:1106461044:N:%E7%94%B5%E5%8A%A8%E7%89%99%E5%88%B7:bfee1d767fa0a91e5e853b29d794c6f2&ali_trackid=1_bfee1d767fa0a91e5e853b29d794c6f2&spm=a230r.1.14.1.R0FzCm
1.抓包:找到获取评论的请求
建议大家使用谷歌浏览器v55版本的,其他更高版本的谷歌浏览器,打开控制台后找不到cookie信息,这个对于本次项目非常重要。
简单解释一下cookie:用来识别用户,比如你登录一个网站,网站就给你一个cookie,在你未注销之前,你访问这个网站的所有页面都是通过这个cookie,换句话说,你可以拿着这个cookie访问那些需要登录账号的网站页面,前提是需要你手动登录一次抓包获取这个cookie。
浏览器F12打开控制台——NetWork——刷新——找请求。点击商品页面上的「累计评论」,找到以list_detail...开头的信息,如图所示。
2.模拟请求
在下图所示的页面中找到请求网址:
https://rate.tmall.com/list_detail_rate.htm(萌新注意,问号后面可以不加,等下加在另一个地方)
3.请求头header
这里需要用到cookie信息,在下图所示的页面中找到cookie后,复制粘贴到代码中,写完代码后,我在反复调试过程中,发现用第二页商品评论不容易被反爬,这里大家可以选择第二页的cookie信息。
如果第二页的cookie也不行的话,大家可以按照上面的步骤寻找其他页面的cookie,直到代码可以成功运行。
4.构造请求网址后面的内容
下图是构造网址需要的参数
需要注意的是,本次爬取商品的评论的信息有63页,所以需要对currentPage动态设置,构造一个for循环,就能爬取所有页面的评价。
其次,还要注意的是callback这个参数,在获取时要和cookie信息一致,必须都是一个页面上的,这样代码运行才不会出错。
5.写代码
6.结果展示
总结
爬虫进阶必不可少的是要学会抓包和调式,这个项目对Python爬虫进阶来说很有用,大家可能觉得写出来很简单,但是就这么个小问题我也是钻研了许久,也算是对抓包入门了。
学会了爬取淘宝商品评价后,接下来就可以对商品进行数据分析等一些好玩有趣的实战项目,可以进一步增加爬虫功力,想想都激动~