1.1 爬虫定义
爬虫是一个抓取网页的计算机程序,它在互联网中漫游,发现和搜集信息。日夜不停地运行,尽可能多、尽可能快地搜集各种类型的新信息,同时因为互联网上的信息更新很快,所以还要定期更新已经搜集过的旧信息,以避免死连接和无效连接。
1.2 第一个爬虫
RBSE (Eichmann,1994)是第一个发布的爬虫。它有两个基础程序。第一个是“spider”,抓取队列中的内容到一个关系数据库中,第二个程序是“mite”,是一个修改后的www的ASCII浏览器,负责从网络上下载页面。
1.3 日常生活接触
Baiduspider, Googlebot。
1.4 爬虫组成
网络爬虫主要由控制器,解析器,资源库组成。
中央控制器:根据系统传过来的URL链接,分配一线程,启动线程调用爬虫爬取网页。
解析器:是爬虫的主要部分,负责下载网页,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。
资源库:主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。
1.5 爬虫类型
一般分传统爬虫和聚集爬虫。
(1)传统爬虫,从一个或若干初始网页的URL开始,获得初始网页上的URL,抓取之后,通过源码解析来获得想要的内容。
(2)聚焦爬虫:根据一定的网页分析算法过滤与主题无关的链接,重复上述过程,直到达到系统的某一条件时停止所有被爬虫抓取的网页将会被系统存贮。
抓取对象:静态网页、文件对象、动态网页、特殊内容。
特殊内容:比如RSS、XML数据,情况特殊需特殊处理。如新闻的滚动新闻页面,需要爬虫不停地监控扫描,发现新内容马上就进行抓取。
使用爬虫的代价包括:
(1)网络资源:在很长一段时间,爬虫使用相当的带宽高度并行地工作。
(2)服务器超载:尤其是对给定服务器的访问过高时。
(3)逻辑糟糕的爬虫,可能导致服务器或者路由器瘫痪,或者会尝试下载自己无法处理的页面。
个人爬虫,如果过多的人使用,可能导致网络或者服务器阻塞。
乐思网络信息采集系统比网络爬虫的功能更加强大,它能够采集新闻、论坛、微博、微信等媒介上的信息,可以这样说,只要是互联网上公开可见的信息,我们的系统都可以采集。乐思采集软件系的主要功能是批量而精确地将互联网目标网页中的半结构化数据抽取为结构化的记录,保存在本地数据库中,以便进一步分析使用。
新鲜度和过时性
爬虫的目标是尽可能高的提高页面的新鲜度
同时降低页面的过时性
5.1 一般抓取方法:
(1)从一个起始URL集合开始,以一定的规则循环在互联网中发现信息。这些起始URL可以是任意的URL,但常常是一些非常流行、包含很多链接的站点(如Yahoo!)
(2)划分:将Web空间按照域名、IP地址或国家域名划分,每个搜索器负责一个子空间的穷尽搜索。
5.2 抓取策略
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。
深度优先在很多情况下会导致爬虫的陷入(trapped)问题。
目前常见的是广度优先和最佳优先方法。
5.3 策略选择
(1)选择策略,决定所要下载的页面;
①重新访问策略,决定什么时候检查页面的更新变化;
② 平衡礼貌策略,指出怎样避免站点超载;
②并行策略,指出怎么协同达到分布式抓取的效果;
(2)提示:为了获取更好的抓取策略,更多有关网页质量的信息应该考虑进去。
5.4 注意事项
爬虫开发的主要问题是性能和反封锁。
很多时候,采用高并发高频率抓取数据是可行的,前提是目标站点没有采用任何反爬措施(访问频率限制、防火墙、验证码……)。
更多时候,有价值的信息,一定伴随着严格的反爬措施,一旦ip被封,什么组件都没戏了。
Robots协议
Robots协议(也称为爬虫协议、机器人协议等),
全称是“网络爬虫排除标准”(Robots Exclusion Protocol),
网站通过Robots协议告诉搜索引擎哪些页面可以抓取,
哪些页面不能抓取。
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。
通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
HTTP状态码通常分为5种类型,分别以1~5五个数字开头,由3位整数组成:
200:请求成功 处理方式:获得响应的内容,进行处理
201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到 处理方式:爬虫中不会遇到
202:请求被接受,但处理尚未完成 处理方式:阻塞等待
204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。 处理方式:丢弃
300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。 处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 处理方式:重定向到分配的URL302:请求到的资源在一个不同的URL处临时保存 处理方式:重定向到临时的URL
304 请求的资源未更新 处理方式:丢弃
400 非法请求 处理方式:丢弃
401 未授权 处理方式:丢弃
403 禁止 处理方式:丢弃
404 没有找到 处理方式:丢弃
5XX 回应代码以“5”开头的状态码表示服务器端发现自己出现错误,不能继续执行请求 处理方式:丢弃