网络爬虫的实现
网络爬虫的实现
老师让写爬虫,先复制一个帖子供自己看先..
作者:Gupta, P. ; Johari, K. ; Linagay's Univ., India
文章发表在: Emerging Trends in Engineering and Technology (ICETET), 2009 2nd International Conference on pages 838~844
摘要-万维网是一个通过HTML格式使数十亿的文件产生联系的集合 ,然后如此规模庞大的数据已经成为信息检索的障碍,用户为了查找自己想要的资料可能要翻转数页。网络爬虫是搜索引擎的核心部分,网页爬虫持续不断的在互联网上爬行来寻找任何新的增加到网络中的页面和已经从网上删除页面。由于网页的持续的增长和动态性,遍历网络中所有的网址并处理已成为一种挑战。一个集中性的爬虫就是一个爬取特定话题,访问并收集相关网页的代理。这篇论文中会讲到我做过的一些网络爬虫的设计来检索版权侵权的工作。我们将用一个种子URL作为输入并搜索一个关键字,根据这个关键字进行检索,并且获取发现该关键字的网页。焦点在于查找包含用户检索的关键字的网页的爬行方式,我们使用广度优先的方式进行检索。现在,当我们检索的网页时,会用到文本上的模式识别。我们选择一个文件作为输入并用模式识别算法进行检索。这里,匹配只针对文本并检查网页上有多少文本可用。我用的匹配查找的算法有Knutt-Morri-Pratt, Boyer-Moore,有限自动机。
关键字:搜索引擎,聚焦爬虫,模式识别,版权侵犯
1 简介
万维网提供了一个很庞大的信息来源,几乎所有类型。然而,这些通常分部在许多Web服务器和主机上,并且使用了很多不同的格式。我们都希望,我们应该用更少的时间检索到最想要的结果。在本文中,我们介绍了聚焦网络爬虫的工作,通过合并找到版权侵权的过程,
对于任何网络爬虫都要考虑到两点,首先,爬虫需要有计划能力,比如可以决定下一次拉取哪个页面;其次,它需要有一个高度优化和强大的系统架构,以达到每秒可以拉取大量的页面,并且防止系统崩溃,有效的管理拉拉取的页面,合适的资源和Web服务器。最近的一些学术话题很多关注第一个问题的,包括决定哪些重要的网页应首先抓取。与此相反,关注第二个问题的越来越少了。显然,所有的大搜索引擎都有高度优化的检索系统,虽然该系统的细节文档通常在他们的所有者那里,一般是保密的。目前已知的有详细文献记载的系统是在DECCompaq的Heydon和Najork开发的Mercator系统,该系统被Alta Vista采用。建立一个短时间拉取很少的网页的运行缓慢的爬虫很简单。但是,构造一个高性能系统在系统设计、I/O和网络性能、健壮性和可操纵性方面是一个很大的挑战。
每一个搜索引擎都分为很多不同的模块,这些模块中的爬虫模块是搜索引擎中最重要的,因为它有助于为搜索引擎提供最好的可能结果。爬虫是搜索引擎中 ‘浏览’网页的一个小程序,类似与用户通过点击来访问不同的页面,程序给了一些从网上检索的用于启动的种子URL。爬虫提取检索到的网页中的URL,并将这些信息提供给爬虫控制模块。该模块对之后访问哪些页面做判定,再把这些页面链接提供给爬虫。爬虫还会拉取检索到的页面并添加到页面库。这样持续不断的爬行网页,直到本地资源耗尽,比如存储设备。
本文的其余部分的结构如下。下一节调查爬虫相关工作,第3节介绍我们使用的聚焦爬虫的原理,第4节介绍模式识别算法,第5节介绍爬虫的实现,第6节总结并对未来需要做的工作进行说明。
2 相关工作
网络爬虫,也被称为机器人,蜘蛛,蠕虫,网页追逐者,和流浪者,几乎和网络本身一样古老。第一个网络爬虫的开发者是Matthew Gray’s Wandered,写在1993年的春天,大约正好是NCSA Mosaic浏览器的第一个版本发布的时间。
在本论文中,我们集中关注聚焦爬虫,它会根据我们给定的关键字索引相关页面。爬虫在指定的页面查找我们输入的特定关键词,首先会在种子网址中查找,然后再转向该网址的页面和该页面中其他的包含我们指定的关键字的链接中查找,一直这样爬行页面直到我们达到了我们设置的极限,但它可能找不到我们之前设置的页面数量,表明该页面没有其他的链接包含这个特定关键字。爬虫提取页面的时候也应该确保只拉取特定的链接,以保证不会总是一遍又一遍的访问同一个页面。 我们拉取完这些链接之后,会以一个txt文本作为输入并运行KMP(Knutt-Morris-Pratt),BMM(Boyer-Moore) 和有限自动机 这三种模式识别算法。
3 聚焦爬虫的原理
图 1 聚焦爬虫原理
爬虫的运行的过程如上图所示,DNS 进程负责移除种子URL中的一个URL并试图通过IP协议连接该URL主机。
首先,DNS进程查看DNS数据库,检查该主机是否已经被解析,如果已经解析了,则直接获取该IP,如果没有解析,DNS进程通过DNS服务器获得主机IP;之后read进程负责获取解析的IP地址,并试图打开一个HTTP socket连接来请求页面。
下载页面之后,爬虫会检查页面内容防止重复拉取,然后,提取并标准化拉取的页面中所包含的URl,核实网络机器人是否可以爬取这些页面,检查爬虫之前是否拉取过这些URL
显然我们不能让服务器一直处于忙状态来检查这些信息,所以我们必须设置一些时间戳,等检查信息的时间戳耗尽了即使还没有检查完爬虫也会继续爬取页面,如果时间戳用完了还没有找到可用链接会提示找不到字符串,如果找到了爬虫会去拉取页面并在某些表里面记录下来存储在文件里面,这里,我们只拉取 html页面。
4 模式识别
这里的模式识别的对象只针对文本,模式识别用来做句法分析。
当我们去比较模式识别和普通的表达式匹配时会发现模式匹配更加强大,但是识别的过程中会慢一点
一个模式匹配就是一个字符串,所有的关键字都可以被写成大写或者小写,一个模式匹配表达式由一元的和二元的操作符组成, 空格和制表符可以用于分隔关键词,文本在发现知识的过程中有重要作用,可以用于从未结构化的或者半结构化的数据中提取隐藏的信息,这部分是之后工作的基础,由于大多网页中内嵌HTML代码,这些网页信息都是半结构化的,还有很多网页都是被链接的,也有很多冗余页面,网页文本帮助我们获取并综合有用的数据,信息和知识
这篇论文中,模式识别这样应用在爬虫程序中,当我们启动爬虫程序,它会提供给我和关键字相关的链接,之后会读取这些链接的页面,并且只读取这些页面的内容。这里的内容是指仅仅是网页中可以获取的文本信息,不包含图片,标签,还有按钮。拉取的内容会被存储在一些文件中,但是不会包含任何的HTML标签
我们提取文本的算法: