最近在学习用python写爬虫,发现抓取动态网页比抓取静态网页难了不是一点。在抓取京东商品评价时遇到了无法解决的问题,在网上搜索无果后来知乎向各位大大求助。因为需要大量抓取,我觉得用模拟浏览器渲染js来实现速度似乎不可接受。这里打算分析京东商品评价的最后加载的url,用python模拟这一请求来获得地址。用过ie发现其url是这个 但一直分析不出callback=jsonp1427099305331&_=1427099313525 的两串数字是如何生成我,要如…
忘记密码? 请输入您的电子邮件地址。 您将收到一个链接,并将通过电子邮件创建一个新的密码。
评论 ( 20 )
爬虫有很多种,懂代码的技术流尽情参考大神@ 路人甲提供的python抓取思路和示例代码,一顿猛如虎的操作后获取到想要的京东商品评论数据。
如果懂一点代码,又不想用python那么麻烦,八爪鱼的json采集功能值得拥有。找到json网址→复制到八爪鱼中启用json采集功能→刷刷刷出来数据。
八爪鱼json采集教程请看:
json采集功能点 – 八爪鱼采集器
而八爪鱼的另一种采集方式——简易模板,可以说是不懂代码的数据工作者的福音。对于爬取京东商品评论这个需求,10次鼠标点击和2次文本输入,即可快速获取数据。划重点,10次鼠标点击和2次文本输入,操作简单得不能更简单系列。
以下是使用八爪鱼的简易模板,抓取京东商品评价的具体操作示例。
1、 第一步,下载八爪鱼软件并安装,打开并登录软件后,点击简易采集。
2、选择“京东”采集模版。
3、选择“京东商品评论” 模版,然后点击立即使用。
4、按下图描写的步骤,输入要采集的商品网址以及翻页次数,然后点击“保存并启动”。
5、根据自己的需求选择相应的采集方式,这里以“启动本地采集”举例。
6、喝杯咖啡,静静等待数据,见证奇迹的时刻到了。
7、选择导出数据,然后选择适合的导出方式,这里以excel2007举例说明,最后导出可以看到采集到的满满数据,全都是爱啊
最后附上八爪鱼的下载链接:
免费下载 – 八爪鱼采集器
你用前嗅的数据采集软件啊,我之前是用它采集淘宝的商品信息和京东的评价,全都采集下来了,而且速度很快,我也是不太会操作,直接跟他们买的配置,拿来后在自己电脑上直接就采集了,一点不费事。像是一些网站反爬虫机制很严格,他们也有办法破解,还是很强大的。
现在又免费版的,就是采集不了太多的数据,不过可以试试效果。
最好的办法是使用了selenium模拟浏览器爬取数据,不需要关注js怎么加载,数据怎么请求,拿到最后渲染的dom数据解析就可以了
如何抓取价格啊?
out:
基于 @路人甲的代码改进一下, 主要就是回答中提到的callback参数其实可以不使用的, 这样数据返回的就是json格式, 方便存取
看了一下京东的商品评论接口已经变化了,变成了下面这个样子。
只需要模拟几个参数就可以了。
productId:商品的ID,如果没有商品ID可以在商品静态页面抓取到。
sortType:评论按照什么排序:推荐排序和时间排序,默认5
page:当前是第几页评论,从0开始递增
pageSize:指定每一页展示多少评论,默认10
callback:默认不需要修改:fetchJSON_comment98vv61
有了这几个参数说明,现在假设我们已经知道商品ID:3820002,只需要每次访问评论的接口,然后把page不断地加一即可,运行效果如下所示。
以上只是简单测试,改进意见:
代码示意:
怎么把初次评论和追加评论分别爬取出来呢?
自己动手做了一个爬取京东商品评论的

下载地址http://www.yunya.pw/?post=4
====================================
爬虫的Python源码,陆续整理… 云涯 – Personal Web
天猫旗舰店 – 2016.11.25
京东旗舰店 – 2016.11.27
====================================
前一段时间,也是在爬取jd的商品评论,也会出现 题主 所说的问题。
先说一下我的解决策略:
首先伪装是必须的嘛,这一点不用多说,不过这次没有使用IP代理。不想麻烦,不过使用代理的话能使效果好点,这是肯定的。
然后,采取多线程抓取,同时采取 遇到空白 就sleep15s,但是这样仍然会出现空白。 怎么办?不能在一棵树上吊死啊,那就换一个爬喽。毕竟需要爬的商品有很多。
等等,但是这样也太粗暴了,是吧? 所以,就算你要屏蔽我我也要对你不依不舍。对于每次爬取我都会记录一下,对于这个商品的评论我爬了多少?总共要爬多少?这样下次我就接着爬(●ˇ∀ˇ●)
好吧,承认,还是有点简单粗暴,,ԾㅂԾ,,
好像有点偏题了(lll¬ω¬)。其实那两个字串也不怎么重要的,去掉一样可以,就是 空白页会多一点。。。
写到这里我回去看了一眼问题,原来是去年的问题(ˉ▽ˉ;)…
善意的提醒一下,jd的评论提取api接口有变,变成了下面这个样子
callback=fetchJSON_comment98vv35654
当然本人现在也没能准确的知道后面的一串数字是嘛意思,不过可以确定的是应该时间戳,因为测试过连续几天用这一个字串都没问题的,但是你用浏览器去查看的时候,能够发现它是在变化的,间隔大概是1小时左右吧,记不太清楚了。朋友猜想的可能是 代表着服务器的编号 本人也不是很清楚哈,大家可以猜猜看,反正猜对也没奖O(∩_∩)O
感谢阅读~
京东商品信息和评价采集爬虫
推荐看看这篇知乎专栏的文章,专门讲的是怎么写爬虫爬取京东商品评论的:手把手教你写电商爬虫-第五课 京东商品评论爬虫 一起来对付反爬虫 – 数据工厂 – 知乎专栏
自己用fidler抓包,然后解析出json链接,然后用正则去拿评论。
最后提到的那个url可以用的,会返回空白的原因是京东服务器对你不断请求,做暂停了。
之前我也做过京东评论爬虫,不加IP代理和useragent差不多15秒就给你空白返回,然后隔3-5s,开始返回正确的内容。
建议用那个网址加代理和useragent,后面你还会发现更多问题。
动态加载的东西包括评论,价格(当前价格初上市价格),评论数(打1分至5分的具体个数及和),评论。
直接获取不到对吧。
找对应的标签的id,再顺着js找到对这个id对应的url,就是你找到的那个东西,那两串数字每次访问都是不一样的,也许是时间戳或者时间戳的变体之类的吧我没细看。
不知道怎么生成两串数字对吧,好,你把这个url的两串数字删了试试,发现没,一样的可以访问和请求。
多次访问出空白,看下给你返回的是302。我测的精确数据是,有的偶然的,sleep个一秒两秒的重新访问就行。有的sleep 27 秒或者 40秒 就恢复正常了。
callback=jsonp1427099305331&_=1427099313525 无意义 这部分是用jsonp ajax获取数据源时自动生成的回调函数名称和随机数 对抓取无影响
这些都是header里的,慢慢截吧,相当于一个安全验证
后面生成的串主要适用于跨域传输数据,不影响提取数据吧,可以直接通过http://club.jd.com/productpage/p-xxx-s-0-t-3-p-x.html就能提取json
解决了,有个url可以专门进入评价页面
多研究规律,少研究技术
可以为任意值,比如这里是时间戳