网络爬虫-京东优惠活动数据分析
作者介绍:
程虹升,唯品会大数据部数据分析师,数据分析和挖掘实战的践行者,“51CEO”公众号的运营者。
声明:
1. 该文章为技术类文章,部分同学可能对代码部分有所不适,可忽略代码(黑色背景),直接看结论部分即可;
2. 本文得出的结论仅供参考,不要过度联想。
最近双11快来了,睡前空闲时会去看看有啥可以买的东西——某个月黑风高的夜晚,突然get到一个主意,如果可以个性化推送各个电商平台的优惠信息——比如我比较喜欢囤书,当有图书优惠活动的时候,能及时通知到我,那是极好的,不用每天都去京东、当当、amazon看一下。
那么:
第一步,及时获取各个网站每天的优惠信息,可以写个爬虫程序每天去各个网站门口侯着,发现打折、满减等优惠活动;
第二步,把优惠信息整理出来后立刻向我汇报(进行推送);
动手写代码的时候,我改主意了——我想看电商平台的历史优惠活动记录,毕竟每天每个平台的的活动就那么几条(都算不上“大”数据啊)。
找来找去,发现只有京东把【优惠活动】记录挂在官网上,如下图所示,这个就是我要抓取的内容。
注:截图来自 https://www.jd.com/moreSubject.aspx
本文分三部分:
1. 数据抓取,即把数据从网站上倒腾下来;
2. 数据清洗,去除不要的行和列,然后把字段内容清理一下;
3. 探索分析,简要看两个问题:
活动的频率如何?是否有季节变化?
活动名称最高频的关键字是啥?
1. 数据抓取
开始数据抓取前,要顺藤摸“数”——找到数据的源头:
打开目标网页地址(https://www.jd.com/moreSubject.aspx);
点击第N页使网页跳转,检查下地址栏是否有变化,如果跳转后的新地址出现 page之类可以表示页面的参数,如果有那么就要对新的地址进行分析,这里是没有的,所以要继续操作;
快捷键F12查看网页信息(Chrome浏览器),切换到Network菜单下,选择XHR(此时里面是空的),然后重复第2步的操作(点击“第N页”),XHR信息一般就会出现(如下图示)。
单击出现的query信息,查看Header,可以知道3个关键信息:
请求的网址,即Request URL
请求方式,常见的是get 或者 post,这里是post
编码方式,常见的编码方式是'utf-8','gbk','gb2312',这里是 utf-8
再切换到Preview,可以看到json格式的数据。
可以看到数据记录应是在'record'里面(展开小三角形可以看到明细数据)。
关键信息到手了,然后需要分析请求网址中参数的含义。
https://www.jd.com/queryNews.html?type=2&title=&page=650&r=0.03990295037602465
其中:
page 应该是页面;
type 这个估计就是区分是【公告】还是【活动】;
r 不知道是啥,可以去掉后把修改后的地址贴浏览器看一下,看数据返回结果有没有变化(经测试,这个参数是可以不要的)
查清楚网页数据的“来龙去脉”之后就可以写代码了,主要思路如下:
1. 先从网址获取html格式的数据(json)格式;
2. 将json格式的数据转化为dataframe;
3. 把每个页面得到的数据进行合并;
干活之前先加载工具包(本文的分析工具为python,Windows7环境)
1. 定义一个函数,该函数实现的功能是将url网址转化为html格式数据
2. 循环迭代网页id,批量抓取数据,并进行整合
2. 数据清洗
数据采集完毕后,需要查看下数据情况:
数量,使用 df_res.shape 命令来查询函数和列数;
质量,使用 df_res.head() 来看下看5行数据;
这里发现有三个问题:
有三列变量的值貌似都是None,需要删除掉;
两个变量是日期时间格式,需要改成日期(yyyy-mm-dd)格式;
title列有一些html标签(<font>括住的内容),需要清理掉;
第1步,用 df_res.describe() 命令看下变量描述情况,发现commentvisible, content, share 这三列变量都是None值。
删除列可以使用如下两种方式:
df_res = df_res.drop(['commentvisible','content','share'],axis = 1)
del df_res['commentvisible']
第2步,把日期时间格式改为 yyyy-mm-dd 日期格式
第3步,去除title列的html标签
因为前面的英文标签和中文标题可以用分隔符“>”来分割,而且一般来说中文标题里面一般不会出现>符号,所以,直接对字符串分割,得到list,然后截取list最后一个值(中文标题在最后)。
经过3步的清洗,得到数据应该是如下样式了
注意到前面的变量描述结果,unique小于count则说明数据存在重复,这里考虑【活动上线日期time,活动名称title】是不重复的就行,后面的统计分析也主要是基于这两列。
3. 探索分析
探索分析主要看两个问题:
每年、季度的活动频率如何?
活动中最高频的关键字是啥?
先计算日期衍生的变量——活动的年、季、月。
得到的数据格式如下
按年对活动计数,看活动频率
结果如下
说明:
1. 活动数量在2010年后数量较多,后续的分析也主要考虑2010年后;
2. 13年14年是活动高峰期,这个可能和京东上市有关(京东于2014年5月上市)。
分析季度活动波动情况
这里定义一个分组柱状图的作图函数groupbar (https://github.com/hscheng/python)。
作图结果如下(并没有发现什么季节规律啊)
接下来看活动标题中出现的最高频的关键词,思路如下:
先用jieba来分词;
剔除分词结果中不需要的标点符号等;
统计每个关键词的频率;
使用wordcloud包来做词云图;
1.分词
2.清洗
3.计数
4.作图
接下来就是见证奇迹的时刻了!
可以得到两点结论:
满减、折扣是优惠活动的主要形式,实实在在的优惠更能打动消费者啊;
空调、手机、电视是出现频率最高的品类,这三个品类不仅居家必备,而且单价都比较高。
以上是网络爬虫的简要分享,欢迎留言讨论。
附:
本文完整代码笔记(html版)见 https://github.com/hscheng/python
网络爬虫-京东优惠活动数据分析相关推荐
- 网络爬虫 | 京东全站数据采集(类目、店铺、商品、评论)——基于Python中Scrapy框架
目录 1.定义采集数据的存储结构 2.定义管道文件 3.定义中间件文件 4.scrapy爬虫设置文件修改 5.商品类目抓取 6.商品信息抓取 7.店铺信息抓取 8.评论信息抓取 9.抓取过程 10.基 ...
- 基于网络爬虫的大学生就业数据分析与预测模型研究
- python网络爬虫的第三方库_Python常用第三方库_网络爬虫、数据分析与WEB开发、机器学习...
Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...
- Python 网络爬虫:Selenium 好买基金网
更多商业数据分析案例(原理,完整代码,数据集).统计学.SQL.网络爬虫详见公众号 " 数据分析与商业实践 " 引言 网络爬虫应用十分广泛,本篇针对金融领域,目的为根据用户输入 ...
- 网络爬虫笔记4,信息提取之Re库
每页44个商品 通过对例子的分析,我们得到了搜索接口和翻页的URL对应属性 / import requests import redef getHTMLText(url):try:r = reques ...
- 网络爬虫,python和数据分析学习--part1
# -- coding: utf-8 -- """ Created on Tue Oct 10 08:38:20 2017 本段程序为科大王澎老师<网络爬虫,pyt ...
- 网络爬虫,python和数据分析学习--part2
Created on Tue Oct 10 10:47:31 2017 本段程序为科大王澎老师<网络爬虫,python和数据分析>中P15,针对spyder3做了微调 主要任务:实现了自动 ...
- python网络爬虫第三方库_Python常用第三方库大盘点
Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...
- 《Python3网络爬虫开发实战》第二波抽奖赠书活动来了!
嗨~ 给大家重磅推荐一本书!上市两月就已经重印 4 次的 Python 爬虫书!它就是由静觅博客博主崔庆才所作的<Python3网络爬虫开发实战>!!!同时文末还有抽奖赠书活动,不容错过! ...
最新文章
- 【网络知识点】防火墙主备冗余技术
- 安卓入门系列-02创建一个项目
- linux运维学了又忘记,Linux运维工程师经常忘记的10个实用Linux命令
- JS 给某个对象添加专属方法
- android remote shell,关于 Appium V1.7.2 新增的唯一安卓可执行 mobile 命令 shell 的疑问...
- 蓝桥杯 ADV-108算法提高 分数统计
- 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax
- 白杨SEO:关键词定位与兴趣定位是什么?这两类推广渠道在网络营销上有什么差异?
- cpc安装 mysql_专利电子申请客户端(CPC软件)
- 数学计算机学具制作,小学五年级数学学具怎么?
- 鸿蒙系统可以安装当贝市场吗,荣耀智慧屏安装软件全攻略,新手党必备!当贝市场推荐...
- WallpaperEngine壁纸提取工具,pkg文件提取静态图片,pkg文件转jpg,pkg文件转png
- 宋体小四在手机上是几号_word文档4号宋体 word宋体小四是几号字
- CentOS8设置网络安装源
- 一学校出150名在校“老板”
- 直接创建框架协议、合同
- 海马玩模拟器 修改host(让hosts生效)
- 如何给运行中的docker容器增加映射端口
- 【漆天编程】MT4和MT5有什么区别?这是我见到过的最好的回答
- 今日头条---后台开发笔试题
热门文章
- java实现天气预报
- 如何把二维码引入固定资产管理?
- Java爬去教务系统后怎么发布_java实现-强智教务系统API文档-课程信息
- 苹果cms模板_苹果cms怎么做seo?
- 一学校出150名在校“老板”
- SAI创始人谈美股IPO:做清洁算力领域“特斯拉” 减少碳排放
- chrome的APP模式与全屏模式 --app --kiosk
- android解析包时出现问题怎么解决方法,安装APK软件时发生“解析包时出现错误”的9大解决方法...
- qt中toLocal8Bit和toUtf8()有什么区别
- Excel中如何显示复杂公式中局部的计算结果,例如嵌套函数,使用多个函数