编辑: 牛牛小龙人 2012-12-15

3 图1-1 通用爬虫实现的原理及过程 通用网络爬虫的实现原理: (1)获取初始的 URL.初始的 URL 地址可以人为地指定,也可以由用户指定的某个或某几 个初始爬取网页决定. (2)根据初始的 URL 爬取页面并获得新的 URL.获得初始的 URL 地址之后,先爬取当前 URL 地址中的网页信息,然后解析网页信息内容,将网页存储到原始数据库中,并且在当前获得 的网页信息里发现新的 URL 地址,存放于一个 URL 队列里面. (3)从URL 队列中读取新的 URL,从而获得新的网页信息,同时在新网页中获取新 URL, 并重复上述的爬取过程. (4)满足爬虫系统设置的停止条件时,停止爬取.在编写爬虫的时候,一般会设置相应的停 止条件,爬虫则会在停止条件满足时停止爬取.如果没有设置停止条件,爬虫就会一直爬取下去, 一直到无法获取新的 URL 地址为止. 聚焦网络爬虫的执行原理和过程与通用爬虫大致相同,在通用爬虫的基础上增加两个步骤: 定义爬取目标和筛选过滤 URL,原理如图 1-2 所示. 图1-2 聚焦网络爬虫的原理 聚焦网络爬虫的实现原理: (1)制定爬取方案.在聚焦网络爬虫中,首先要依据需求定义聚焦网络爬虫爬取的目标以及 整体的爬取方案.

4 | 实战 Python 网络爬虫 (2)设定初始的 URL. (3)根据初始的 URL 抓取页面,并获得新的 URL. (4)从新的 URL 中过滤掉与需求无关的 URL,将过滤后的 URL 放到 URL 队列中. (5)在URL 队列中,根据搜索算法确定 URL 的优先级,并确定下一步要爬取的 URL 地址. 因为聚焦网络爬虫具有目的性,所以 URL 的爬取顺序不同会导致爬虫的执行效率不同. (6)得到新的 URL,将新的 URL 重现上述爬取过程. (7)满足系统中设置的停止条件或无法获取新的 URL 地址时,停止爬行. 1.4 爬虫的搜索策略 在互联网数据时代,有三大搜索策略需要有所了解,下面一一介绍. 1. 深度优先搜索 深度优先搜索是在开发爬虫早期使用较多的方法,目的是达到被搜索结构的叶结点(那些不 包含任何超级 URL 的HTML 文件).在一个 HTML 文件中,当一个 URL 被选择后,被选 URL 将执行深度优先搜索,搜索后得到新的 HTML 文件,再从新的 HTML 获取新的 URL 进行搜索, 以此类推,不断地爬取 HTML 中的 URL,直到 HTML 中没有 URL 为止. 深度优先搜索沿着 HTML 文件中的 URL 走到不能再深入为止,然后返回到某一个 HTML 文件,再继续选择该 HTML 文件中的其他 URL.当不再有其他 URL 可选择时,说明搜索已经结束. 其优点是能遍历一个 Web 站点或深层嵌套的文档集合.缺点是因为 Web 结构相当深,有可能造成 一旦进去再也出不来的情况发生. 举个例子, 比如一个网站的首页里面带有很多 URL, 深度优先通过首页的 URL 进入新的页面, 然后通过这个页面里的 URL 再进入新的 URL,不断地循环下去,直到返回的页面没有 URL 为止. 如果首页有两个 URL,选择第一个 URL 后,生成新的页面就不会返回首页,而是在新的页面选择 一个新的 URL,这样不停地访问下去. 2. 宽度优先搜索 宽度优先搜索是搜索完一个 Web 页面中所有的 URL,然后继续搜索下一层,直到底层为止. 例如,首页中有

3 个URL,爬虫会选择其中之一,处理相应的页面之后,然后返回首页再爬取第 二个 URL,处理相应的页面,最后返回首页爬取第三个 URL,处理第三个 URL 对应的页面. 一旦一层上的所有 URL 都被选择过,就可以开始在刚才处理过的页面中搜索其余的 URL,这 就保证了对浅层的优先处理. 当遇到一个无穷尽的深层分支时, 不会导致陷进深层文档中出不来的 情况发生.宽度优先搜索策略还有一个优点,能够在两个页面之间找到最短路径. 宽度优先搜索策略通常是实现爬虫的最佳策略,因为它容易实现,而且具备大多数期望的功 能.但是如果要遍历一个指定的站点或者深层嵌套的 HTML 文件集,用宽度优先搜索策略就需要 花费较长时间才能到达最底层. 3. 聚焦爬虫的爬行策略 聚焦爬虫的爬行策略只针对某个特定主题的页面,根据 最好优先原则 进行访问,快速、 第1章理解网络爬虫 |

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题