Python个性化主题网络爬虫探究

北京皮肤科权威医院 http://m.39.net/pf/a_4648926.html

21世纪以来,在互联网高速发展的背景下,互联网上的信息呈现暴发式的增加,对应的提供人们检索信息功能的搜索引擎也在飞速发展、更新和迭代。

但现有的知名搜索引擎能够触及的互联网内容用九牛一毛来形容也毫不为过。为了给细分领域的客户提供更优质的搜索体验,建立一套自己的搜索引擎就十分重要了。建立一个搜索引擎一般来说需要做这样几件事:

1、利用网络爬虫自动下载网络页面;

2、对爬取结果建立高效快速的索引;

3、根据相关性对网络进行准确的排序。

目前的爬虫技术一般分为两种:通用网络爬虫和主题网络爬虫。

通用网络爬虫一般尽可能多的采集页面,而一般不关心被采集页面的顺序与页面主题的相关性。Google和百度等公司均采用通用网络爬虫。

主题网络爬虫则根据一个已经预定好的主题进行爬取采集,最终对采集结果进行汇总,其爬取页面具有大量相关性。相对通用网络爬虫,主题网络爬虫所消耗的资源和网络带宽更少,所采集的主题相关性更强,页面的利用率更高。

本期“安仔课堂”,ISEC实验室的叶老师为大家详细剖析下主题网络爬虫的几个主要技术点。

一、遍历算法

年,瑞典数学家欧拉(LeornhardEuler)解决了柯尼斯堡问题,由此,图论诞生,欧拉也成为了图论的创始人。图由一些节点与连接这些节点的弧组成。我们可以把互联网看成一张具有指向无数方向的浩瀚无边的图,每一张网页为图的一个节点,每个网页中的超链接为图中的弧。有了超链接,我们可以从任何一个网页出发,用图的遍历算法,自动访问到每一个页面,然后存储所需要的信息。

图的遍历算法可以分为深度优先搜索(Depth-FirstSearch简称DFS)和广度优先搜索(Breadth–FirstSearch简称BFS)。

由于深度优先搜索的遍历方式,在很多情况下会导致爬虫在深度上过“深”地遍历或者陷入黑洞,大多数爬虫不采用深度优先搜索,目前主题爬虫比较常见的是广度优先搜索方式。

广度优先搜索遍历URL策略的基本思路是:将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。

图1

如图1,广度优先遍历搜索(BFS)的访问顺序为:A-B-C-D-E-F-H-G-I深度优先搜索策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择其中一个再进入。如此一个链接接着一个链接地抓取下去,一路走到黑,直到处理完一条路线之后再处理下一条路线。如图1,深度优先遍历(DFS)的访问顺序为:A-BCDE-H-IF-G

不管是哪种方式,理论上都可以保证访问到所有的节点。但是工程上基于稳定性等要求一般采用的都是BFS方式。

二、网络爬虫

本文使用Python语言作为主开发语言。在Python中使用urllib.urlopen(url[,data[,proxies]]):创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。

Python可以使用urllib请求页面获取网页HTML信息,实现如下:

fromurllib.requestimporturlopen

html=urlopen(‘


转载请注明:http://www.aierlanlan.com/tzrz/1496.html