爬虫概念

网络爬虫也被称为网络蜘蛛、网络机器人,是一个自动下载网页的计算机程序或自动化脚本。(模拟浏览器的行为去获取数据)

浏览网页基本流程

初识爬虫_搜索


网络爬虫就像一只蜘蛛一样在互联网上沿着URL的丝线爬行,下载每一个RUL所指向的网页,分析网页内容。

爬虫分类

1.通用网络爬虫

通用网络爬虫又称为全网爬虫,其爬行对象由一批种子URL扩充至整个Web,该类爬虫比较适合为搜索引擎搜索广泛的主题,主要由搜索引擎或大型Web服务提供商使用。

➢深度优先策略:按照深度由低到高的顺序,依次访问下一级网页链接,直到无法
再深入为止。
➢广度优先策略:按照网页内容目录层次的深浅来爬行,优先爬取较浅层次的页面。当同一层中的页面全部爬行完毕后,爬虫再深入下一层。

2.聚焦网络爬虫

聚焦网络爬虫又被称作主题网络爬虫,其最大的特点是只选择性地爬行与预设的主题相关的页面。
➢基于内容评价的爬行策略:
该种策略将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关的页面。
➢基于链接结构评价的爬行策略:
该种策略将包含很多结构信息的半结构化文档
Web页面用来评价链接的重要性,其中一种广 泛使用的算法为PageRank算法。
➢基于增强学习的爬行策略:
该种策略将增强学习引入聚焦爬虫,利用贝叶斯分类器对超链接进行分类,计算出每个链接的重要性,按照重要性决定链接的访问顺序。
➢基于语境图的爬行策略:
该种策略通过建立语境图学习网页之间的相关度,计算当前网页到相关网页的距离,距离越近的页面中的链接优先访问。

3.增量式网络爬虫

增量式网络爬虫只对已下载网页采取增量式更新或只爬行新产生的及已经发生变化的网页,需要通过重新访问网页对本地页面进行更新,从而保持本地集中存储的页面为最新页面。
常用的更新方法如下
➢统-更新法:
以相同的频率访问所有网页,不受网页本身的改变频率的影响。
➢个体更新法:
根据个体网页的改变频率来决定重新访问各页面的频率。
➢基于分类的更新法:
爬虫按照网页变化频率分为更新较快和更新较慢的网页类别,分别设定不同的频率来访问这两类网页。

爬虫的合法性与robots协议

1.爬虫的合法性

目前,多数网站允许将爬虫爬取的数据用于个人使用或者科学研究。但如果将爬取的数据用于其他用途,尤其是转载或者商业用途,严重的将会触犯法律或者引起民事纠纷。
以下两种数据是不能爬取的,更不能用于商业用途。
➢个人隐私数据:如姓名、手机号码、年龄、血型、婚姻情况等,爬取此类数据将会触犯个人信息保护法。
➢明确禁止他人访问的数据:例如用户设置了账号密码等权限控制,进行了加密的内容。
还需注意版权相关问题,有作者署名的受版权保护的内容不允许爬取后随意转载或用于商业用途。
爬虫的合法性与robots协议

2. robots协议

➢robots协议也称作爬虫协议、机器人协议,它的全名叫作网络爬虫排除标准

( Robots Exclusion Protocol ) ,当使用一个爬虫爬取一个网站的数据时,需要遵守网站所有者针对所有爬虫所制定的协议。

初识爬虫_搜索引擎_02


它通常是一个叫作robots.txt的文本文件,该协议通常存放在网站根目录下,里面规定了此网站哪些内容可以被爬虫获取,及哪些网页是不允许爬虫获取的。

robots.txt例子

➢禁止所有爬虫访问任何目录的代码如下:

User-agent:*
Disallow:/

➢允许所有爬虫访问任何目录的代码如下:

User-agent:*
Disallow:

robots.txt的样例

-agent: *
Disallow: /
Allow: /public/

这实现了对所有搜索爬虫只允许爬取public目录的功能,将上述内容保存成​​robots.txt​​​文件,放在网站的根目录下,和网站的入口文件(比如​​index.php​​​、​​index.htm​​​和​​index.jsp​​​等) 放在一起。
上面的User-agent描述 了搜索爬虫的名称,这里将其设置为*则代表该协议对任何爬取爬虫有效。比如,我们可以设置: ​​User-agent: Baiduspider​​​。这就代表我们设置的规则对百度爬虫是有效的。如果有多条User- agent记录,则就会有多个爬虫会受到爬取限制,但至少需要指定一条。​​Disallow​​​ 指定了不允许抓取的目录,比如上例子中设置为/则代表不允许抓取所有页面。​​Allow​​​一般和​​Disallow​​​一 起使用,一般不会单独使用,用来排除某些限制。现在我们设置为​​/public/​​​ ,则表示所有页面不允许抓取,但可以抓取​​public目录​​。