利用pthon爬虫和数据分析在618抢购Macbook pro

好久没玩点有意思的了,这次借618这个购物节,自己也要搞台mbp,顺便搞一波大新闻. 对某宝的其中四家店,再加上某东一家店,对比同一款机型,对价格进行监控,至于监控时间,大概是不间断的监控吧,还有邮件提醒哦~

涉及面

  • 爬虫中阶知识,因为涉及到动态页面抓取,一个页面对不同型号进行点击操作,之后再获取元素,使用了phantomjs包
  • python字符串处理中阶知识,涉及到数据清洗,重构,还有缺失值的填充,这次没用pandas进行处理,直接用的是字符串处理技巧
  • 因为需要进行数据分析展示,故需要初级的JavaScript知识以及echarts的了解,这次构图使用的是echarts,比较简单

开搞

因为涉及到商家利益,具体的代码细节将不再展开,如果有学术想研究的,可以私信我,或者留言,这个我考虑一下,清洗一下再发吧,虽然是比较简单的。

流程和以前的动态页面抓取一致,选择需要的url之后进行元素点击操作,目的是为了选中需要比较价格的机型,这都么有问题,我以前写过很多关于phantomjs和selenium的动态页面处理的博客,大家如果只是想参考代码,可以移步这里参考,

回复公众号"618"获取。

主要将一些注意点

  1. A:元素加载过程中出现can’t find element问题 Q: 首先确定自己的元素位置是否写对,建议使用xpath的方法定位元素,再chrom上直接可用copy xpath,其余都对的情况可以加上wait等待时间,参考这里 http://blog.csdn.net/mrlevo520/article/details/52397305
  2. A:如果ip被封了,connection refused Q: 请参考Python爬虫防封杀方法集合 回复公众号"618"获取。
  3. Q:动态页面加载过程中,商家交换了商品的次序,导致获取到的div位置不正确,怎么办? A: 解决方法,额,我是每天看一下log,看看有没有不正常的,不正常就kill任务然后修改位置,再接着跑,一般来说,商家不会闲着无聊去修改位置的,另一个解法是对之后的结果手动清洗,如果价格与之前的价格差值大过一定范围,则直接认为是噪声数据,毕竟,怎么可能价格涨跌超过1000的呢,还有一个解法是,确定点击元素的值代表是什么型号,然后点击的价格就是什么型号的了,这个我懒得做了。。。。
  4. Q:我想要及时知道哪家店价格已经到我的接受阈值了,怎么通知我? A:写监控邮件,当价格低于某个阈值,直接触发邮件功能。

数据处理

这代码没啥,就是处理一些细节注意,数据抓取的形式也给出,可以套用理解。我最后的目的是获取价格变动的时间戳,不管哪家变动,都获取,然后把值都给选出来,这里有一些问题的是脏数据的处理,还有就是阈值的设定,毕竟某东的优惠券是800这个幅度的,,,,

注意:处理方式,因为只有几万条数据,我就直接采用读文件流的形式来了,数据量大的可以采用pandas和Spark,这也是完全可行的


数据分析

这里就用到了前端的一点点知识了,你可以不用理解这是搞的什么,替换数据会不会?可以参考我写的一点小白教程echarts小白入门实在自己懒得写的话,我写好了,你不会懒得下载吧echarts演示价格趋势 回复公众号"618"获取。

这是总体的一张图,额,我们可以,额,清楚的看到,某东的价格变动次数,相比较于某宝,额,动态调价调的起飞啊

接下来看比较细致的几张图

这一幅图可以看出,的确在618那一天,某东到到价格最低,但非第一次到达,我们可以看在16好16点多就又一次达到过这个价格,而相比较于某宝,商家的定价规则在15号之后就没有产生过变动,这点就有点意思了,采集的四家店的三家在13号之后都不变化,一家店最后修改价格的时间15号,嗯哼


因为抖动太平凡,所以只有用柱状图来表现了


三家店的动态调价,当然趋势是向下的,而且他们的店家貌似也非常关注同行价格,会进行及时调价


当然也有不关心价格,然后一看同行,我曹,都调价了啊,不行不行,我得赶紧的,–所以,A这家店,调价的幅度是其他三家最大的,如果大家也关注这家店,你也知道原因的,科科。


建议

  • 对于节日主办方,的确可以选择那天下手,不过考虑下那天下手的代价就是快递炒鸡慢
  • 对于非主场的凑热闹商家,其实商品会和主场错开峰,就像苹果开发布会,三星不也得缓缓,不能直接怼啊对不对,哈哈,所以差不多提前两三天买应该是没有问题的,当别人还在抢购的时候,你已经收到货啦。
  • 土豪随意

其他

我就不过度解读了,在18号的确大家可以用最低的价格入手,但是相比较于大家不断的网络流量,这一点差价而言,我想双方都是很乐意看到的,这也就是各种大促销的由来,巴不得一年四季有个节日就搞个促销,当然,抢券这种是比较例外的,的确有很大幅度的降低价格,但还是那句话,流量。更多的数据自己挖掘请下载上述的html文件,回复公众号"618"获取。enjoy yourself!

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2017-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

CTF实战30 CTF题目练习和讲解五

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

42820
来自专栏程序员的诗和远方

20180826_ARTS_week09

第一种方法,把数字转成字符串,再变成数组,倒转,然后再变回字符串。 很明显,这个方法效率不高。

10510
来自专栏SDNLAB

OpenDaylight安全漏洞无人问津

编者按:开源模式就像是市集,不仅可以提高效率,还可以通过开放全方位检测软件的不足。但是想要将开源的效果发挥到最大就得有完善的管理体系。OpenDaylight在...

36040
来自专栏Java学习网

每个程序员都需要学习 JavaScript 的7个理由

每个程序员都需要学习 JavaScript 的7个理由 最近在和招聘经理交流现在找一个好的程序员有多难的时候,我渐渐意识到了现在编程语言越来越倾重于JavaS...

24690
来自专栏云计算

云计算,迷你版线程同步

昨天发了那个吹牛的文章,一不注意把今天推送文章的机会用掉了,所以我现在(PM 8:50)虽然已准备好,但也发不出来,抱歉,说好的今天发线程同步的内容只等到明天凌...

23360
来自专栏精讲JAVA

程序员们,曾经是否有个bug让你开始怀疑人生

相信程序员们都有一个共同的女朋友。这个女朋友总是阴魂不散,时不时还不忘调戏下男朋友程序员,而且你依然对她欲罢不能、想入非非。

11520
来自专栏闵开慧

lamp兄弟连的解决问题套路

首先我想说问这些问题的除了第三个问题可能会有人跟你讲讲什么个意思以外,估计大部分问题都是未遂。。。有人问完没反应还说 “大家不帮我”。。。不是不帮你,是你问问...

36080
来自专栏杨建荣的学习笔记

go语言学习初体验

我们暂时先抛开go语言,咱们说下行业里近两年的哪些技术发展最火,毫无疑问是Docker和Kubernetes,没错,他们是go语言的顶级项目。

16820
来自专栏SDNLAB

SDN实战团分享(二十):From Lithium to Beryllium,ODL最新动态变化

家好, 感谢宇峰的邀请, 和大家分享OpenDaylight最新发布的一些进展,胶片主要来自Neela Jacques, Phil Robbs和Colin Di...

35870
来自专栏vue学习

读《学习之道》— 搭建组块对抗发懵

7110

扫码关注云+社区

领取腾讯云代金券