数据分析之外部数据采集

提起大数据分析,内容涉及就比较多了,自2010年左右开始接触数据分析以来感觉数据分析是很庞大体系,大致涉及数据源、数据采集、数据仓库、数据挖掘、机器学习、数据可视化等几个方面,而以上每一模块都可以展开深入研究。一直想写一些积累,也不知从何写起,开这个公众号的初衷也是激励自己严谨做事,同时分享一点经历给团队的其他成员。

数据分析离不开数据源,一般数据源分为内部数据和外部数据,本文侧重分享数据源之外部数据采集(数据爬取)的一点爬虫技巧。

主体思路分为:抓包分析、关键信息分析、加密部分处理、抓取关键数据。

第一步 抓包分析(tcpdump \wireshark )

网页版:

windows上用浏览器打开欲分析的app的网页版,按F12进入开发者控制台(查看页面元素、网络),找到关键数据对应的url,并分析、验证与实际页面展示内容是否一致(一般数据分两种 1是通过请求页面直接携带内容返回 ;2 单独的数据请求url 通过 json或者xml其他格式返回)。

可通过查看请求的头部信息、Cookie 、参数等分析url的请求方式,是post还是get,如果是get 参数是url上携带一目了然,如果是post可以看到请求参数部分内容,切换按时间顺序不同的资源请求查看header信息,仔细对比分析,甚至是可以找到哪个Cookie或者header里面的哪些项是关键标记的一次会话.找到这些特征,爬取的工作就完成了第一步。接下来就是想办法分析这些特征模拟并发送请求,获取数据部分了。

手机app版:

自行设置好网络与电脑共享同一个wifi,使用wireshark或者tcpdump命令抓包,然后分析。

第二步 模拟并请求验证第一步找到的关键url

接上步在f12页面上,关键url右键如下图,复制出来,在服务器上测试一下,可以成功拿到与页面内容一致的信息,OK接下来是如果验证一下哪一项是必需模拟的值。如下图,sessionId 可标记一次会话,尝试修改删除此值,会话已失效.

第三步 模拟生成sessionId

可反复查看时间顺序加载的页面和js,分析里面的内容,找到哪一步模拟返回的sessionID,问题即可搞定。这一步需要 花时间去研究页面的源码,js的实现。一般通过源码找出模拟一次请求,即可得到sessionID.因涉及其他网站安全,此处只提供思路,具体有兴趣了解加密、解密,如何获取的可与我联系。

接续分析比如此用户页面上展示的粉丝数据,找到与之匹配的URL,同理模拟以上,递归爬取即可得用户信息列表

第四步抓取数据

通常简单的可以模拟的,直接wget或者curl命令可以完成的,直接写shell脚本完成。

目前一般用户数据大的规模网站不是https就是具备防爬的,如何稳定运行,并且躲过服务器的限制,我专门有写一个程序,模拟请求以上发现的url,保存cookie等信息 依次请求URL获取用户列表。程序可自动获取代理IP,发现IP1被限制后,自动使用下一个IP,完成这。以下是我测试获取的部分数据。

总结

数据分析,离不开内部外部数据相结合,日常分析中以下是不可缺少的环节,剩下的工作就是数据仓库和数据可视化了,接下来继续分析数据仓库(hadoop生态圈\oracle)和数据可视化技巧。希望喜欢技术,愿意分享的同行们与我联系,共同交流。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180426G1YIEB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券