当前位置:AIGC资讯 > 数据采集 > 正文

一、网络爬虫入门

一、网络爬虫入门

一、都有哪些爬虫? 二、网络爬虫是否合法? 三 、网络爬虫的约束。(Robots协议) 四、python网络爬虫的流程。 感谢

一、都有哪些爬虫?

首先我要说的是,爬虫并不仅仅是python专属,也就是说,网络爬虫也可以用其他语言实现。

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。
实际的网络爬虫系统通常是几种爬虫技术相结合实现的。

通用性网络爬虫
搜索引擎(Search Engine),例如传统的通用搜索引擎baidu、Yahoo和Google等,是一种大型复杂的网络爬虫,属于通用性网络爬虫的范畴。但是通用性搜索引擎存在着一定的局限性:

不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。

为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。

聚焦爬虫
是一个自动下载网页的程序,它根据既定的抓取目标,有选择地访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。

增量式网络爬虫
增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。

和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。

例如:想获取赶集网的招聘信息,以前爬取过的数据没有必要重复爬取,只需要获取更新的招聘数据,这时候就要用到增量式爬虫。

深层网络爬虫
Web页面按存在方式可以分为表层网页和深层网页。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。深层网络是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。

例如用户登录或者注册才能访问的页面。可以想象这样一个场景:爬取贴吧或者论坛中的数据,必须在用户登录后,有权限的情况下才能获取完整的数据。

二、网络爬虫是否合法?

有关互联网法规正在逐步建立和完善中,就目前而言,如果抓取的数据仅供个人使用或者用于科研一般并无大碍;但如果数据抓取用于商业范畴,就要就事论事了,有可能属于违法也有可能并无大碍。

举个简单例子:(有危险动作请勿模仿)

假设张三是个小说狂,TA在看完我后续的博文后学会了网络爬虫。有一天张三发现有一本小说现在在网上很火但是网站不支持下载,TA通过简单爬虫把整本小说抓取了下来,自己存进文档看。这并不违法。

但是,还是这个张三,还是这本小说,他发现通过简单爬虫爬取速度太慢了 ,于是他用多进程,分布式等方法加快了爬虫速度,不到一分钟就下完了小说。下完以后TA发现,网站打不开了 。原来是他给服务器增加了太大压力导致服务器崩溃了 这就可能触犯了法律 ,不过还要根据情况而定。

过大并发量的爬虫程序,相当于发起了一次 CC 攻击,并不是所有网站都能承受百万级别并发量的。一些小网站实际上都是很脆弱的。所以,写爬虫,务必谨慎,切勿给服务器增加过多的压力,满足我们的获取数据的需求,这就够了。
尽量做到
你好,我好,大家好,才是真的好

还是这个张三,还还还是这本小说。TA发现身边朋友也很喜欢这本书,于是TA转动TA 的小脑瓜想到:
“如果我把这本书打印出来卖,那我不是赚大了?”
说干就干,TA当即打印了几十本书,后来大家在他这买盗版书,TA也大赚一笔。

这不仅侵犯了作者的版权还损害了网站和作者的利益,很可能收到律师函警告。
这是断然不可取的,大家不要模仿。

三 、网络爬虫的约束。(Robots协议)

那到底网络爬虫的边界是哪呢?现实世界中有法律约束保护人们,网络世界也有类似的,于是就有了Robots协议。

ROBOTS协议就是爬虫协议,它的全称是“网络爬虫排除标准” 实际上这并不是一个法律条约,只是这是每一个使用爬虫的用户都需要维护的道德准则。
网站会通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

另外,不要一味追求速度但不考虑服务器的承受范围,如果因为你的过分压缩时间等造成服务器崩溃,那你可能就要因此付出一些代价。因为这种情况下的爬虫是可能被认定为网络攻击的。

四、python网络爬虫的流程。

python网络爬虫分为三个流程

获取网页
基础技术:requests,urllib,selenium。
进阶技术:多进程多线程抓取,登录抓取,图片ip封禁和使用服务器抓取。

解析网页
基础技术:re正则表达式,BeautifulSoup,lxml
进阶技术:解决中文乱码

存储数据
基础技术:存入txt和存入csv文件
进阶技术:存入MySQL数据库和MongoDB数据库

感谢

部分资料来源于网络他人博客和书本以及网课 在此由衷感谢各位。

更新时间 2023-11-08