一个爬虫工程师的日常

这是「进击的Coder」的第 131 篇热点新闻

作者:yuan

来源:来日正长

阅读本文大概需要 4 分钟。

很多读者可能都不太清楚爬虫是干什么的,今天我就来跟大家科普下爬虫工程师平时的工作都是怎样的。

说起爬虫,大家可能不太理解它的概念。但给大家举个通俗易懂的例子,像百度、谷歌这些大型搜索引擎,你就可以把它们理解为一个巨大的爬虫,它们无时无刻不在抓取着网上的所有信息,然后展示给用户看。这种称为通用网络爬虫。而爬虫工程师更多干的是聚焦网络爬虫,是专门根据业务针对某些网站而制定的特定爬虫程序,只需要获取目标网站的数据。

爬虫又分为增量式爬虫和全量式爬虫。全量式爬虫又称为一次性爬虫,就是把该网站的数据一次性全部抓取下来,后面就不需要再管该网站了,这种爬虫任务通常比较简单。而增量式爬虫不止这次要把网站数据抓取下来,而且之后还要检测该网站有无数据更新,如果有更新的话还需要把更新后的数据再抓回到数据库里。所以增量式爬虫对于爬虫程序的健壮性要求会更高些。

爬虫工程师的目的就是获取所需的数据。而主要难点就是获取数据的过程中需要跟网站的各种反爬措施做斗争。对于简单的网站,可能只是验证一下请求头或者限制 ip 访问的频率,这两种可以通过构造请求头和购买 ip 代理来解决。再复杂点就是 url 中会带些关键参数,而这些关键参数需要通过 js 逆向来破解出来参数是如何生成的,然后自己写程序来构造参数。更复杂的就是破解各类验证码,破解验证码如果自己不怕麻烦而且懂深度学习相关的知识的话,可以自己搭建相应模型训练来进行破解。如果想省事又效率高的话就可以直接通过网上的打码平台来辅助工作。

随着移动化时代的到来,越来越多的数据逐渐从 PC 端转移到了 app 端,所以爬虫工程师如果想更精进的话,也必须懂得 app 端数据的抓取。对于简单的 app 数据抓取,可以通过 charles、fiddler 等抓包工具来抓包分析,只要找到数据所在的地址,并且构造合适的请求头便可以得到。再复杂点的有些 app 数据需要破解关键参数,而这些关键参数便需要通过 app 逆向来得到,需要用到 ajax、frida 等逆向框架。

另外如果大家不想破解网站加密而且对爬虫效率没有那么高要求的话,可以试试自动化模拟工具。所谓自动化模拟,就是让爬虫完全像人一样在操作,可以实现所见即所得的效果,功能非常强大。像 PC 端可以用 selenium,app 端可以用 airtest,这里我只是简单列举了两个工具,还有很多其它好用的工具,各位可以选择自己觉得顺手的使用。

最后和大家说下我平时接任务的流程,首先确定需求网站,然后确定需求的数据,并且判定该任务是属于全量式爬虫还是增量式爬虫。之后对需求网站进行反爬机制的探索,并且制定相应的反反爬措施。然后就开始搭建数据库并编写爬虫程序爬取数据入库。这只是简单的描述一下工作流程,当然具体到每一步的话,可不是那么简单的。

我原来是以抓取文本数据为主,现在由于公司以及业务的变更,目前的爬取领域扩展到了视频、音频、图片等多领域,要说难度的话,可能比原来的难度要稍微大一点,因为像视频音频这种文件不像文字可以直接存储到数据库,这些我还需要自己进行处理,然后存储到 oss 上。不过只要能解决网站的反爬措施,其余的都不困难。

在我看来,爬虫与反爬就是矛与盾的较量。究竟是矛能攻破盾,还是盾能抵御矛。也许爬虫工程师的乐趣就是在一次又一次的较量中得来的吧!

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。

看完记得关注@进击的Coder

及时收看更多好文

↓↓↓

点点 在看行不行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值