抓包工具charles_小白也能爬数据?快试试抓包工具 Charles!

d801081bbc6b84eb13ff0389a0e52279.png

最近不少同学的毕业论文都逼近了 deadline,但有些选了数据分析方作为方向的同学还在发愁,作为前置条件的数据源还没拿到,我该怎么才能把网站上的公开的数据给扒下来呢?

041c906734faf919b82577e20609d75c.png

听说可以用 python 来编写爬虫快速获取数据,但是我没有相关的计算机基础,学习曲线会不会比较陡峭,短时间内我可能掌握不了爬虫所需的知识,除了复制粘贴我就没有更快的办法了吗?

8c28abacfb31484460885c9d9b85d270.png

也有些能写上一两段代码的同学,却因为要爬取的网站有过多的反扒措施而束手无策,cookies 验证,变幻莫测的请求参数,搞的头都大了,我只是想拿点儿数据下来做学术研究哇!

当然可以拜托身边有这方面技术积累的小伙伴解决问题,不过你难道就不想自己动手收集数据吗?

22246f55526f9f5ab91a9f21cec47469.png

下面我会以智联招聘为例子,借用免费的抓包工具 Charles 来把数据爬取过程降维到幼儿园水平,让你也能轻而易举的获取到想要的数据。

https://m.zhaopin.com/download?utm_source=ceshi4?key=7<br>https://mp.weixin.qq.com/a/~csGQYhd4w1H8i0ilKkSF7A~~ (二维码自动识别)

假如我现在要做一个互联网岗位薪酬方向的论文,需要获取上述图片中的职位列表,诚然你可以一条一条的复制粘贴到 excel 中去,但稍微做一下时间估算就知道这是一个多么耗费精力的过程,要是能够在我浏览的过程中,它们能自动的进入到 excel 里面该有多好啊!

学会使用抓包工具后再配上简单的转换代码,这将不再成为奢望,但我们需要先分析一下这些数据是怎么一步步显示在页面之上的。

d444bb1155150ba8cd9710d1231b66c4.png

打开 Chrome 浏览器的开发者工具,切入 Network 选项卡,再刷新页面之后,我们可以看到列表中会不断增加新的条目,这一个个条目就是浏览器作为客户端向服务器发起的网络请求,服务提供商在接收到这些请求之后就会返回请求所需的数据。

随便点几个请求,右侧便会出现这些请求的详细信息,不同的请求索要的数据类型不同,大致可分为网页资源(HTML)、脚本资源(JS)、样式资源(CSS)、图片资源,以及数据资源(如 JSON 等)。

8a55034d017312149f08a5d9bc2f6829.png

总而言之,页面上所展示的任何信息,都是从服务器端获取而来的,我们所关注的职位列表也不例外,那么我们怎么快速在这些众多的请求中定位到我们想要的请求呢?

【Command + F】(Find)调出搜索框,输入列表里任一可视的元素值,如“python高级开发工程师”,就可定位到该字符串在哪些请求中出现过:

8a34675a5dbf3980a4b8c047c55fb798.png

可以很清楚的看到,列表中所展示的内容,正是根据上图框中的 sou 请求返回的数据渲染而来的,每一条招聘信息的各个属性也都在返回中有对应,这是一个非常标准的 JSON 格式数据返回。

只需要简单的右键将这个请求的返回拷贝进本地文件中,再加上一小段 python 解析代码,就能瞬间获取一整页的职位数据:

729a3ea9f3b2bf15a0aa46e0e33cb3a5.png

一页有多少数据,工作效率就相当于提高了多少倍,是不是很令人激动呢?

1e80eca764c6177195ade9aae8ee3fad.png

但若想获取几十页或者几百页的数据,上述筛选请求、粘贴返回的操作不免又有些繁琐,要是能自动的存到本地文件里多好呀!

19163186ce5394c64b75678a47e0ae88.png

这里就要轮到神器 Charles 出场了,官网下载免费版本之后,开箱即用,启用之后可以在界面上观察到与 Chrome Network 差不多的请求与返回样式:

dd93425fedf40cc8adc7565f6fbc4bb1.png

原理也很简单,在浏览器与服务器之间 Charles 充当代理,请求和返回都要先过一遍 Charles,有些浏览器不支持的操作可以通过 Charles 来操作,如测试工程师会通过这款工具做请求和返回的拦截修改,从而加快测试进程,而我们目前只使用它来进行数据获取。

接下来需要在 Tools -> Mirror 中设置一下镜像映射,当 Charles 拦截到指定路径的请求时,会将返回的数据自动存入到所设置的本地文件夹中:

bbb1129e0a58a321e71b453424864b05.png

做出如上配置之后,剩下要做的就是正常浏览网站,搜索要爬取的职位以及手动翻页,进入到文件夹即可看到它们已经整整齐齐的躺在了目标位置:

551a18dfe7ecb607ea1b3f6b2477b533.png

接着再把上述简易的 python 代码稍作改动,将读取单个文件转化为循环读取整个文件夹下的文件列表,再借助 openpyxl 库将数据输出为 excel 即可完美达成最初的懒人目标:

d43edd5ee8e972f12b4eee46dc6bb82e.png

e52a8d1b14818aa14f76d0e7b5352e46.png

通过抓包来获取数据的方式,几乎可以应对互联网上绝大部分网站,当然前提是你需要的数据量并不是很大,通篇描述下来,其中还是有很多要涉及到人工操作的环节,如翻页,若一页一页的点下去,还是一件很烦心的事情。

但这只是面向真小白读者的一篇引导文,如果对数据爬取或者 python 编写效率工具有兴趣的同学,烦请关注本公众号,后面会由浅入深的讲解更多相关的技巧。

21eaa8c2c52cf0930dd5c9f7d5330584.png

工具人不加班,和我一起夺回生活的控制权!

http://weixin.qq.com/r/1nXdxXPEGi5lrTem9yDE (二维码自动识别)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值