投稿:爬虫工程师的日常

裸睡的猪

共 1569字,需浏览 4分钟

 ·

2021-03-17 11:59

作者 | yuan
来源 | 来日正长


很多粉丝对爬虫还是比较感兴趣的,但是并不了解爬虫工程师平常的工作,刚好有位做爬虫的同学给猪哥投稿,今天就给大家安排上!


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


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


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


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


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


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


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


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


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




对于爬虫这块你还有其他要问的吗?欢迎留言!

浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报