所用工具

  • Chrome 版本 72.0.3626.109(正式版本) (64 位)
  • Python 3.5.2 :: Anaconda 4.2.0 (64-bit)

数据采集

确定待采集数据

对评论所含内容进行简单的分析,初步确定所需要抓取的内容。首先,在京东商城手机信息界面的用户评价中含有昵称、会员等级、评价星级,评价内容、手机型号、购买时间等等。

其中通过分析会员等级与购买的关系,可以给为不同会员提供不同的产品做参考。分析评价内容可以大概可以推断出消费者对该产品的态度、以及哪些回复关注度比较高等等。分析购买时间可以了解到消费者集中的购买时间段。这些分析对商品广告的精准投放以及为消费者提供更个性化的服务提供了重要参考

确定采集对象

选择按评论数降序排列的手机型号,选择Apple iPhone 8 Plus(A1864) 64GB的评论数据进行采集

采集准备

(robots协议说明:robots是网站对爬虫的限定规则,它规定了那些爬虫可以爬,那些数据可以爬)

因此在采集之前,查看京东商城的robots协议,如下图

参考robots协议规则

User-agent: 指定对哪些爬虫生效
Disallow: 指定不允许访问的网址
Allow: 指定允许访问的网址

通过分析robots协议的内容,而下面即将采集的目录在根目录的comment的子目录下,不涉及到用户的个人隐私,因此可以继续进行采集。

但是在采集过程中,添加sleep函数,既为了防止频繁访问ip被封,也防止高频度访问对网站带来的负荷。

开始采集数据

分析网页

首先选择一款评论数目多的手机,按照评论数降序排列

点击进入手机信息页面,在默认手机参数选择下

按F12打开调试界面,打开network面板并在过滤器中填入“comment”,如下图

此时,点击商品评价,筛选到如下结果

含有pageComment字段的即为服务器返回的页面评论数据,右键该文件->copy->Copy link address复制url并在url地址栏进行访问。访问结果如下图

可以很容易的看到,服务器返回给页面的数据是JSON格式的数据。

可以先使用JSON在线编辑器进行json解析,在解析时发生错误,这是由于页面的数据的头部和尾部有一些其他的字符使得页面内容不完全是json数据,去掉第一个’(‘以及其之前的字符,同时去掉最后一个’)'以及其之后的字符即可。整理之后的结果如下图
从图中可以清楚的看到,评论共有100页,每页的comment有10条。单独点开其中一条评论数据如下图

可以清楚的看到我们所需要的数据。

那么新的问题来了,京东界面所写评论有163万+条,那其他的数据都去哪了?查看一下第100页后面,看有没有发现

看了之后才发现,还有114万+用户给了默认评价,为了分析更准确,加上这部分数据(其实点开也就100页,其他的可能服务器就没留着)。按照同样得方式,获取这部分评论的通用

尽管如此,也才仅有1500条左右的数据,不过在评论的菜单中还有追评、好评、中评、差评等,把这些也算进来,对比比较差异


发现不同评价的score不同,综合大约有4000~5000条数据

继续统计手机不同参数所含的评论。在这里我将手机颜色从“金色”改为了“深空灰色”,按照同样的方式查看url。并与之前获取的进行对比。如下图

对比之后发现,不同颜色的产品ID(productid)发生了变化。但其实评论区域还是各种颜色都有,所以这也是手机评论数据,只不过为了美观,在每次更改手机参数选择时进行了刷新(动态生成)。

根据这些url参数,就可以尽可能多的爬取该款手机的评论数据,具体代码请移步JDComment_Spider,里面的SpiderScript是一个完整的京东评论爬虫脚本,并且采用了随机浏览器和延时访问来防止爬虫被封,为了获取完整的数据,加入了try…except防止程序中断崩溃。

思考

​ 经过上面的分析,可以看到数据量非常有限,远远没有达到163万条。经分析,有以下两种可能:

  1. 出现了数据造假,这个数字可能是刷出来的(机器或者水军)
  2. 真的有这么多的评论,但这时候系统可能只显示其中比较新的评论,而对比较旧的评论进行了存档。

拓展采集

通过采集之后发现京东的评论数据没有达到要求,于是到淘宝上看同款产品的评价进行搜集。

能找到包含json格式的评论数据,但是使用python进行访问时,却没有跳转到应该有的数据界面,而且跳到了其他界面,如下图

这意味着,没有登陆授权,无法查看评论信息(上面能看到评论信息,也是因为事先登陆过了)。因此只能采取selenium模拟浏览器行为来先登录,然后再获取这部分评论信息。

python+selenium+webdriver的探索及问题:

通过一系列的碰壁探索,发现selenium无法绕过淘宝登陆界面的验证,淘宝网应该是有识别自动化脚本登陆的反爬机制,根本无法获取登陆状态,无法登陆。

通过伪造请求头来获取淘宝数据:

登陆淘宝后,在淘宝主界面刷新,来获取登陆的cookies信息,如下图

随后用这部分cookies来构造请求头,如下图所示

这样,就能访问淘宝上需要登陆才能获取的页面信息,不过当你尝试就会发现,即使这样,在短时间连续访问多次,也很容易被检测到,从而限制页面的获取数量。我使用该爬虫在不同的时间段爬了六七次,每次requests到第17次就会出错了,有待完善。详细代码见淘宝数据爬取 (预览不了的可以下载看)。

参考:

搞定python多线程和多进程

JSON在线编辑器

Python爬虫,抓取淘宝商品评论内容

Python入门网络爬虫之精华版

Selenium Python文档:四、元素定位

为何大量网站不能抓取?爬虫突破封禁的6种常见方法

处理Jupyter Notebook报错:IOPub data rate exceeded

京东评论爬虫(详解)相关推荐

  1. 用python写一个简单的爬虫_Python实现简易Web爬虫详解

    编辑推荐: 本文主要介绍了Python实现简易Web爬虫详解,希望对大家有帮助. 本文来自于脚本之家 ,由火龙果软件Alice编辑,推荐. 简介: 网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照 ...

  2. Python爬虫详解:爬虫是什么,如何做爬虫?

    Python爬虫详解:爬虫是什么,如何做爬虫? 读前必看: 本篇文章为教学向文章,通俗易懂的语言难免有不合适的地方,请大佬自行退场 爬虫是什么? 去查网,你会看到这样的解释: 爬虫是一种按照一定的规则 ...

  3. Python分布式爬虫详解(二)

    上一章Python分布式爬虫详解(一)简单的介绍了什么是分布式爬虫,废话不多说,本章开始从零搭建一个爬取电影天堂电影信息的分布式爬虫. 本章知识点: a.CrawlSpider爬取电影天堂动作片第一页 ...

  4. php抓取微博评论,python爬虫爬取微博评论案例详解

    前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中,我负责的是数据爬取这块,我主要是把对于杨超越 的每一条评论的相关信息. 数据格式:{"name" ...

  5. 巨细!Python爬虫详解

    爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者):它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本. 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据 ...

  6. Python爬虫爬取微博评论案例详解

    文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中 ...

  7. Requests库爬虫详解

    关于requests: 官方的解释是:Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 作用: Requests 完全满足今日 web 的需求. Keep-Ali ...

  8. python爬虫详解(五)——爬取王者荣耀英雄详细、攻略搭配、出装配置、铭文搭配、搭档/压制、入手详情

    今天给大家爬取一个王者荣耀的详情,让大家更好更快了解,说白了,就是想练练手 点个赞留个关注吧!! 今天爬取的内容相对简单,我也不知道难不难,可能对于新手来说会一点难,难就难着吧,不下功夫当然过不了,熬 ...

  9. 巨细!Python爬虫详解(建议收藏)

    爬虫的基本流程 . 网页的请求与响应 网页的请求和响应方式是 Request 和 Response Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket ...

  10. python爬虫步骤-Python爬虫详解,每一个步骤都给你细腻的讲解(附源码)

    序言 文中的文本及图片来自互联网,仅作学习培训.沟通交流应用,不具备一切商业行为,著作权归著作人全部,如不太好请立即在线留言以作解决. 今日来教大伙儿怎么使用Python来抓取博海拾贝的图片,归类储存 ...

最新文章

  1. linux环境编程-- ftok()函数
  2. loadrunner—参数化
  3. Python正则表达式之额外补充(7)
  4. vivado安装_Vivado下载与安装指南
  5. xor方程组消元 UVA 11542 Square
  6. 表单html遇到的问题及处理,Html表单中遇到的问题
  7. Mycat读写分离笔记Windows
  8. linux salt命令 -e,Linux记录-salt命令
  9. Mysql 数据库学习笔记04 函数
  10. SQL重复记录处理(查找,过滤,删除)
  11. 2021年电子签名政策汇总 行业研究数据公布
  12. win7下crtl+scroll会触发蓝屏重启(滑稽脸)
  13. 分享几个实用的破解软件
  14. 固定在计算机主机箱体上的起到连接计算机,固定在计算机主机箱箱体上的、起到连接计算机各种部件的纽带和桥梁作用的是( )。...
  15. 独孤求败剑学考证 zz
  16. Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术应用
  17. 2021-07-24 centos基础设置
  18. Proximal Policy Optimization近端策略优化(PPO)
  19. form表单的action属性设置相对路径
  20. UEStudio09.20.0.1007 注册码

热门文章

  1. 基于天地图的应用服务系统设计开发—以甘肃高校招生服务为例
  2. Red Teaming Mind Map
  3. 阴历日期和阳历日期互相转换(java)
  4. 投影幕布尺寸计算器_投影安装高质量,全靠这个计算器
  5. 投影幕尺寸参数对照表
  6. 网络出口究竟选择防火墙,还是路由器?
  7. 微信小程序 live-player 无声音
  8. “计算机诺贝尔奖”的首位华人得主姚期智
  9. 吕布机器人评测_999元的吕布机器人到底怎么样?听听玩家们怎么说
  10. 面试官问我:什么是静态代理?什么是动态代理?注解、反射你会吗?