美文网首页测试开发栈
【爬虫系列】- 初识爬虫

【爬虫系列】- 初识爬虫

作者: 测试开发栈 | 来源:发表于2019-10-10 15:45 被阅读0次

    几年前由于互联网和大数据的火热,于是之前一直隐藏于黑暗中的爬虫也跟着走近了大众的视野……爬虫在互联网上无处不在,国内外的各大搜索引擎都是基于爬虫抓取信息后检索的,所以说“互联网上50%的流量都是爬虫创造的”这一点都不为过。大家对于爬虫可以说是既熟悉又陌生,几乎每天大家的工作或生活中都会直接或间接使用到爬虫,可是它看不到摸不着,又不清楚它到底是什么!此外,公众号里面有许多测试童鞋,当开发技术到达一定的高度瓶颈后,不知道后续该如何提升了?我想说做做爬虫项目吧,这是最贴近测试技能的开发实战项目,没有之一!

    那么今天的爬虫扫盲,我觉得讲完下面这几个问题大家应该就能有一个清晰的认识了:爬虫究竟是一个什么形式的存在?它究竟做了哪些事情?它能为个人、企业或组织带来什么利益?

    爬虫的表现形式

    辩证唯物思想告诉我们,认识一个事物最好的方式就是了解事物的表现形式(马克思:我没说过!!),爬虫的表现形式我觉得可以用一个很形象的例子来类比:蜘蛛和蜘蛛网,把互联网看成是一张蜘蛛网,那么爬虫就是在网上爬来爬去的蜘蛛,爬虫在网上爬来爬去的主要目的就是为了采集数据。


    爬虫主要做了哪些事情?

    爬虫的主要目的是爬取目标数据,但是为了达到这个目的,还需要做很多辅助工作,比如前期的目标URL提取或页面分析,以及爬虫身份的隐藏、爬虫的调度和容错处理等,还有最后的数据清洗和入库。一个完整的爬虫程序应该是包含分析、爬取到入库等一系列流程的,为了直观我就画一个图来表示吧。



    上图只是一个单纯的爬虫流程示例,如果还需要加上分布式和并发功能等,就需要继续完成任务调度功能,比如前期已经解析出了URL,并发现了URL的数据分页关系,假定用pageNum来表示分页index,那么完全可以一次并发10个线程去跑10个任务,每个任务就是爬取指定URL的的数据,这样就可以大大提高爬取效率。此外,前面还提到过容错处理,这里也说明一下,爬虫在爬取过程中有时可能会遇到突发异常,比如目标服务器异常,网络异常,对方实施了反扒策略等,这种情况我们也需要分别考虑到,通常需要加入重试机制,你可以自己定义什么类型的异常需要加入重试,比如请求失败,这可能被对方屏蔽了,也可能网络出现了震荡,所以这时候重试2次看看,如果重试还是失败,那么就可以放弃这次爬取任务了,你可以将失败的任务记录下来,后面等空闲或等实现失败任务定时调度功能,等待下一次的再次调度,并设置一个最大的调度失败次数(比如3),超过这个次数,移除这个任务,以后都不用考虑了。

    爬虫的收益

    爬虫的主要目的就是爬取数据,那么爬虫的收益当然就是来自于爬取的数据,这些数据有什么用呢?了解大数据的童鞋应该会知道大数据生态的基础就是数据,没有海量的数据还谈什么大数据!所以爬虫是大数据中数据采集环节的重要方式之一(有平台和客户端的,就采取埋点数据上报的方式获取,没有就合作或爬咯),所以说爬虫的直接收益体现在数据上,简洁收益体现在后期的数据分析上。利用这些数据可以为你的决策提供依据支持和方向预测,举个例子,各大电商平台的商品价格有时喜欢偷偷提价或打折,那么如何监控?现在电商平台那么多,那我们怎么知道天猫、京东、苏宁等电商平台的价格情况?总不能人工去盯着吧,所以让爬虫定时去爬取对应商品的价格信息,生成价格曲线,这样对比就很明朗了,什么时候哪个平台促销打折了一目了然。


    相关文章

      网友评论

        本文标题:【爬虫系列】- 初识爬虫

        本文链接:https://www.haomeiwen.com/subject/xurvkqtx.html