文档库 最新最全的文档下载
当前位置:文档库 › 网络爬虫需求

网络爬虫需求

网络爬虫需求
网络爬虫需求

课题名称: Web资源自动获取技术研究与应用(JAVA 实现)

学校:中南大学

学院:信息科学与技术学院

专业班别:计算机软件专业NIIT081

姓名:谭东方

指导教师:

完成日期:

摘要

随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVi sta,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:

(1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。

(2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。

(3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。

(4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。

为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。

关键字:网络爬虫程序,WEB爬虫,网页蜘蛛,网络机器人

Abstract

This paper first introduces the key techniques and theories which are required in the realization of the extensible Spider, on the basis of which we then use the oriented-object methods to have analyzed and designed a Web Spider with extensibility. Finally, the programming work has been realized on the JCreator platform with the Java language.

The designing of the extensible Spider is made up of two major parts: the Client crawler and the Server monitor. The Client is responsible for the page-collection job, which receives URL of the web pages to be crawled from the server and transmits those out of its crawling range. In order to reduce the response time, the page-collection has borrowed the multithreading technique to improve the system’s performance. The URL transition has utilized the “Character Conversion”function of the MD5 algorithm and the “Splitting Constructor”of the hashing function. The server monitor takes charge of the arrangement of the active spiders and the transition of the arriving URL: the system would allocate an unique ID for every crawler to realize unified management as well as making a reasonable judgment for every URL from clients to determine which active spider this URL should be sent to. In the system, the running process, including the start and interruption, of the crawlers is completely controlled by the server, and the server can dynamically supervise the collection status of each of the crawler.

It has been proved by the experiment that this system has the characteristic of good extensibility. Also, it is capable of adding the active spiders during the running process as well as remembering the collection interruption point .Meanwhile, we’ve found that the speed of the downloading pages as well as the number of the active crawlers is the key factor that would have an effect on the whole system’s performance. Keywords: Extensibility; Web Spider; Multithreading; the URL Transition.

第1章绪论:

1.1课题背景

随着国际互联网(internet)的迅速发展,网上的信息越来越多,全球目前

的网页超过20亿,每天新增加730万网页。要在如此浩瀚的信息海洋里寻找信息,就像“大海捞针”一样困难。搜索引擎正是为了解决这个问题而出现的技术。搜索引擎是通过互联网搜索信息的重要途径。它要用到信息检索、人工智能、计算机网络、分布式处理、数据库、数据挖掘、数字图书馆、自然语言处理等多领域的理论和技术,具有很高的综合性和很强的挑战性。本文研究的内容是作为搜索引擎关键的一部分的网络爬虫,首先,简略介绍一下搜索引擎。

1.1.1搜索引擎的分类和整体结构

搜索引擎虽然所采用的技术和实现的方法各有不同,但是总体来说可以分

为两类,一种是基于目录的搜索引擎,另一种是基于全文检索的搜索引擎。

早期的搜索引擎很多都是基于目录的搜索引攀,由于人工干预较多,故在

覆盖的范围上要远远的小于基于信息采集器的搜索引擎。一般来说,由于使用了人(专家)来对网站进行归纳和分类,网站分类技术为网络信息导航带来了极大的方便,广受人们的欢迎。但是它的缺陷除了成本较高之外,对网站的描述也十分简略,其描述能力不能深入网站的内部细节,因此用户查询不到网站内部的重要信息,造成了信息丢失[1]。例如:如果对一个进行电脑硬件销售站点的目录分为是商业与经济>公司>电脑硬件公司。对其描述为“显示器、电源、硬盘内存等销售”。用户在以“显示器”、“硬盘”为关键字进行检索时,就

能检索到。但如果该站点中还包含有对于主板和显卡的介绍,用户在检索“主板”、“显卡”时,就无法检索到了。同时,对于基于目录的搜索引擎技术而言,其覆盖范围相对与基于全文检索的搜索引擎而言十分有限。

目前,在国内外各主要商业搜索引擎在技术上主要使用了全文检索技术,

下面对基于使用全文检索技术的搜索引擎进行讨论。

基于全文检索技术的搜索引擎主要由三部分组成,如图1-1所示,信息采

集器(网络爬虫),索引器、搜索接口。

图1-1搜索引擎的基本构成

信息采集器:主要功能就是搜集互联网上的信息资源(主要是网页和文字

信息资源)。运行信息采集器时,只要提供极少量的起始网页,信息采集器就

能够按一定的规则沿着网页上的超级链接在网络上漫游,收集资源信息,直至

遍历整个网站。它的性能在很大程度上影响了搜索引擎站点的规模。这部分是

本论文要讨论的重点。

索引器:由信息采集器从网上取来的信息杂乱无章,如果把它们直接用于

查询,效率将极为低微。索引器的主要功能就是分析收集的信息,建立索引库

以供查询。它主要用到的技术有分词、索引词选取、停用词过滤、索引归并、

索引压缩、索引更新、倒排文件缓存。

查询接口:它是用户与搜索引擎的接口。它通常是一个Web应用程序,主

要负责接收、解释用户的请求、查询索引库以及返回排序后的搜索结果。它的

用户界面友好与否是用户能否最大限度地使用搜索引擎功能的关键。

信息采集模块主动派出信息采集器进行自动搜索,信息采集器自动地在网

上漫游,从一个URL或一组URL开始,访问该URL,记录该URL所指文件中所有新的URL。然后再以这些新URL的为起点,继续进行本地索引,直到再没有满足条件的新URL为止。对于一些新出现的网站或在自动搜索中有所遗漏的站点,用户也可以自行向搜索引擎提交网站地址,使得站点内容能被及时得以搜索。得到网页内容后,信息预处理模块过滤文件系统信息,为文件系统的表达

提供各种满意的索引输出,获取最优的索引记录,使用户能很容易地检索到所

需信息。信息预处理模块要完成以下一些功能:格式过滤、词语切分、词性标

注和短语识别等。

最后这些被处理完的信息被送入一个数据库中,使用者在执行查询时,实

际上是从这一数据库中寻找匹配网页、或资料的过程。

全文检索己是一个比较成熟的技术,它能够解决对大量网页细节的检索问

题。从理论上说,只要网页上出现了某个关键词(如果是中文,这个关键词必

须是一个词或者是词的组合),就能够使用全文检索用关键词匹配把该网页查

出来。

1.1.2网络爬虫研究现状

网络爬虫,又称为Robots,Spiders以及Wanderers,几乎与网络同时出现。

第一个网络爬虫是Matthew Gray的Wanderer,出现于1993的春天。在头两届国际万维网会议上出现过数篇关于网络爬虫的论文,如文献[2~4]。但是那时候互

联网上的信息规模比现在要小得多,那些文章中并没有阐述如何处理现在所面

临的海量网络信息的技术。每个搜索引擎的后台,都有相应的网络爬虫在工作

着。但是出于互相竞争的原因,这些网络爬虫的设计并没有公开,除了以下3 个:Google Crawler,InternetArchive Crawler以及Mercator

[5]

搜索引擎Google中,采用了多台机器进行分布式爬行

[6]

。它的网络爬虫包

括5个功能模块,分别运行在不同的进程中。一个URL Server进程负责从一个

文件里读取URL(Uniform Resource Locator),并把它们分发给多个Crawler进程。每个Crawler进程运行在不同的机器上,采用单线程和异步I/O同时从近

300个网站上获取数据。所有的Crawler将下载来的数据传输到同一个Store Server进程,它将这些页面压缩并存放在磁盘上。Indexer进程将这些页面从磁

盘上读出,它将URL从HTML页面中抽取出来,并将它们存放在另一个磁盘文

件中。一个URL Resolver进程读取这个存放链接的文件,将其中的相对链接转

化为绝对链接,然后存入一个文件,这个文件供URL Server进程读取。

Internet Archive Crawler也使用多台机器进行爬行

[7]

。每个Crawler进程可分

配64个站点同时爬行,并且每个站点最多只分配给一个Crawler来爬行。每个

单线程的Crawler进程从磁盘中读取分配给其爬行的站点的种子URL,把它们发送到各自站点的爬行队列中。然后采用异步I/O从这些队列读取链接,下载对

-3-哈尔滨工业大学工学硕士学位论文

应的网页。一旦一个HTML网页下载下来,Crawler就将包含在其中的链接抽取

出来。如果链接指向同一个网站,那就将该链接加入到该站点的队列中;否

则,就将该链接存放到磁盘中。一个批处理进程周期地将这些链接进行过滤,

去除重复链接,并把它们放入相应站点的队列中。

Mercator是一个在可扩展性方面做得非常出色的Crawler

[8]

。Mercator完全

用Java实现。它采用的数据结构可以不管爬行规模的大小,在内存中只占有限

的空间。这些数据结构的大部分都在磁盘上,在内存中只存放有限的部分,伸

缩性很强。Mercator采用模块化设计的思想,通过替换以及增减模块可以很方

便地实现各种功能,如进行各类Web信息统计以及Web快照,体现了良好的可扩展性。Mercator由5个部分构成,分别负责:给即将付诸下载的URL进行排序;将主机名解析为IP地址;使用HTTP协议下载文档;从HTML文档中提取链接;检测一个URL是否已经遇到过。

一个网络爬虫程序通常网络爬虫从种子URL开始,通过网页内容解析,

跟随网页上的超链接进行下载。互联网上的信息更新很快,必须定期更新已经

搜集过的旧信息,避免无效链接,同时获取最新信息。只有高效深度的挖掘才

能使搜索引擎提供全面、即时的服务。

应用于大规模系统的数据采集软件有两个主要设计要求:一是必须有合理

的挖掘策略,主要是何时下载哪些页面。常用策略包括:主题式挖掘,根据

URL链接分析和网页内容对URL列表进行主题分类,然后根据类别进行有目

的的挖掘;分级式挖掘,根据站点规模、权威性、数据更新频率等参数将站点

列表进行分级,实现等级式采集。二是必须要有高度优化的采集架构,能高速

下载大量网页,要占用合理的网络流量、具有鲁棒性、易于管理。目前主要采

用服务器集群技术,由中央控制软件进行任务分发、负载平衡和运行监控。

第2章分布式网络爬虫基本构架

本章讨论一个良好的网络爬虫的设计目标,然后讨论单个结点的结构设

计,最后讨论分布式网络爬虫的结构设计

2.1聚焦爬虫工作原理

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的U RL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件,如图1(a)流程图所示。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的U RL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,如图1(b)所示。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:

(1) 对抓取目标的描述或定义;

(2) 对网页或数据的分析与过滤;

(3) 对URL的搜索策略。

抓取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为的关键所在。这两个部分的算法又是紧密相关的。

2.2抓取目标描述

现有聚焦爬虫对抓取目标的描述可分为基于目标网页特征、基于目标数据模式和基于领域概念3种。

基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。根据种子样本获取方式可分为:

(1)预先给定的初始抓取种子样本;

(2)预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!分类结构等;

(3)通过用户行为确定的抓取目标样例,分为:

a) 用户浏览过程中显示标注的抓取样本;

b) 通过用户日志挖掘得到访问模式及相关样本。

其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。

现有的聚焦爬虫对抓取目标的描述或定义可以分为基于目标网页特征,基于目标数据模式和基于领域概念三种。

基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。具体的方法根据种子样本的获取方式可以分为:(1)预先给定的初始抓取种子样本;(2)预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!分类结构等;(3)通过用户行为确定的抓取目标样例。其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。

2.3系统结构

2.3.1 单个Spider的系统结构图

单个Spider的系统结构如上图所示.每个爬虫从一组种子URL开始,首先根据初始URL并按照机器人拒绝协议检测被访问主机是否允许访问该URL,通过检

测后由HTTP/HTTPS下载模块下载该网页。URL抽取器从下载的网页中抽取出新的URL,然后由URL过滤器逐个检测URL是否符合过滤器限制。最后,用哈希函数计算各个URL的哈希值,如果属于本Spider的爬行范围,则将该URL加入到本地URL数据库中;否则把该URL插入到URL发送队列中,由URL分发器定时转发给对应的Spider.

2.3.2 可扩展Spider的系统结构图及其爬行策略

如图上图所示,为了能够高效地采集页面数据,我们在Spider系统中采用了Client/Server结构。“网络蜘蛛”由一台或多台Spider构成,它们通过内部通信,由信息服务器统一管理并协同工作。由于Spider的效率受采集平台、网络性能等诸多限制,为了达到比较理想的采集速度,我们采用了用多个Spider 同时并行采集的策略。具体并行的Spider个数需要根据实际的采集速度要求和网络环境而定。

显而易见,采用服务器/采集器的结构使采集系统具有很好的可扩展性。管理员可根据系统采集规模的变化动态地调整采集器的数量,在保证系统性能的前提下尽量减少系统开销,达到最佳的性能/价格比。而且在规模动态变化的过程中,系统能维持一致的管理和数据输出接口。

这里所说的信息服务器主要负责对全局URL队列中的URL进行分发、对采集到的页面信息和文件信息进行缓存和压缩以及在采集过程中的一些协调和控制。为了实现的简单性,我们采用了轮转法进行分配。并且当某个Spider没有待采集的URL时,它也会主动向URL分发器发送URL请求。每个Spider的任务就是将信息服务器分配给它的URL按照到来的先后顺序插入到自己的URL队列中,然后不停的从队首取出URL进行采集,直到自己的URL队列为空。为了提高进一步的采集效率,在每个Spider上我们采用了多线程方式。

3可扩展Spider使用的关键技术

3.1 相关协议的介绍

Internet构建在很多相关的协议基础上,协议(Protocol)是用于两个或多个系统之间协作通信的方式。该系统的实现是基于Internet协议之上的,主要有:Socket套接字协议,HTTP超文本传输协议,HTTPS超文本传输安全协议,下面就这些协议作一一介绍。

3.1.1 Socket套接字协议

“套接字”(Socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。套接字不关心数据的格式,它和底层的TCP/IP 协议都只需确保数据到达正确的目的地。套接字的工作很像邮政服务,它们所做的就是将信息分遣到世界各地的计算机系统。

Java有非常简单的套接字编程,其中定义有两个类:Socket和ServerSocket,在套接字程序设计中特别重要。如果编写的程序是扮演服务器的角色,它就应该使用ServerSocket;如果程序是连接到服务器的,那么它扮演客户端的角色,就应该使用Socket类。

无论是通过子类ServerSocket完成的服务器还是客户端,Socket类只用于最初的开始连接,一旦连接建立,就使用输入和输出流来促进客户端和服务器之间的通信。连接成功后,客户端和服务器之间的区别就完全没意义了。任意一端都可以往套接字读写数据。

从套接字得到的结果是一个InputStream以及OutputStream(若使用恰当的转换器,则分别是Reader和Writer),以便将连接作为一个IO流对象对待。一旦客户(程序)申请建立一个套接字连接,ServerSocket就会返回(通过accept()方法)一个对应的服务器端套接字,以便进行直接通信。从此时起,我们就得到了真正的“套接字-套接字”连接,可以用同样的方式对待连接的两端,因为它们本来就是相同的!此时可以利用getInputStream()以及getOutputStream()从每个套接字产生对应的InputStream和OutputStream对象,这些数据流必须封装到缓冲区内。

3.1.1.1 客户端套接字编程步骤

首先,构造客户端套接字。当客户端套接字被第一次实例化时,必须指定两个参数:连接的主机和将要连接的端口号,例如:

https://www.wendangku.net/doc/e95558888.html,.Socket s=new https://www.wendangku.net/doc/e95558888.html, Socket(ip地址,端口号port);

其次,如果在连接指定的主机时出现任何错误,Socket构造函数将抛出IOException。一旦连接成功,就通过Socket.getInputStream和Socket.getOutputStream方法获得输入和输出流。例如:

_out=new java.io.PrintWriter(s.getOutputStream());

_in=new java.io.BufferedReader(new

Java.io.InputStreamReader(s.getInputStream()));

3.1.1.2 服务器套接字编程步骤

首先,构造服务器套接字。ServerSocket对象有几个可利用的构造函数,最简单的构造函数仅仅接受程序将要侦听的端口号,例如:

try

{

s=new ServerSocket(端口号port);

}catch(Exception e)

{

System.out.println(“Error:”+e);

retrun;

}

try语句块是必须要的,因为当程序尝试注册端口号port时,可能会出现不少错误,导致最常见的错误原因是本机已经有服务器在侦听端口port。

其次,一旦程序成功注册了端口port,它就可以开始侦听连接了。以下代码是用于等待连接的:

Socket remote=s.accept();

通过accept返回的Socket对象正好和客户端套接字使用的是同一个类。一旦连接被建立,客户端套接字和服务器套接字之间的不同就消失了。客户端套接字和服务器套接字之间的主要的不同就在于它们的连接方式,客户端套接字连接到其他端,而服务器套接字等待其他端连接它。

3.1.2 HTTP/HTTPS协议

HTTP(Hypertext Transfer Protocol)是建立在TCP/IP网络协议基础上的用于WWW数据传输的标准协议。通过HTTP协议,搜索引擎与WWW服务器建立通信机制,向服务器提出对网页各种特征提取的请求,并从服务器的应答中获得相应数据。

HTTP协议的通讯包是由头字段和实体两部分组成。头字段用于描述各种信息,实体用于装载内容息。重要的头字段有HTTP/1.1(版本号)、Server(服务器类型)、Date(获取时间)、Content-type(媒体类型)、Last-modified(最后修改时间)、Content-length(内容长度)等。了解了HTTP请求/响应通讯包的构造方法,可以很容易获取网页的内容。

HTTPS(Hypertext Transfer Protocol Secure)在许多方面都非常类似HTTP,由于提供底层加密协议的安全套接字层(Secure Socket Layer,简称SSL),才使HTTPS 与HTTP有所区分。一旦数据包被解密,协议的大多数元素都是相同的。

3.2 URL地址结构及分类

Internet上的位置是通过URL(Uniform Resourse Locator,统一资源定位

器)来指定的。这就是唯一标识Internet上具体资源的地址。例如,https://www.wendangku.net/doc/e95558888.html,/images/jeffpic1.jpg 就唯一标识了一副存储在Web服务器上的图像。

URL由Scheme(模式),HostnameJ(主机名),Port(端口),Path(路径)和Anchor(锚点)组成,其中某些URL的端口号和锚点可以省略

URL有绝对和相对之分,绝对URL将指定一个准确的、无歧义的Internet 资源位置。绝对URL包含主机名和文件名。例如:https://www.wendangku.net/doc/e95558888.html,/myfile.html,就是一个绝对的URL:https://www.wendangku.net/doc/e95558888.html,主机名,myfile.html是文件名。

相对URL仅指定绝对URL的一部分,从来不指定http://前缀。通常,相对URL只是一个文件名。如果相对地址以斜杠(/)开始,则表示“直接来源于主机”。这意味着它将使用同样的主机名,完全替换其中的主机名。不以斜杠开始的相对地址,将被简单地连接到正在查看页面所在的目录。

3.3 多线程与线程同步

多线程是一个程序在同一时刻运行超过一个任务的能力。但多线程不是多任务,二者区别是:多线程是在一个程序内部,多任务是在一个计算机内部。

在实际应用中,基于单线程的系统无法满足我们的需要。当一个应用程序正在下载某个文件时,我们并不希望它只专注于原来的任务,也许我们还想同时用它来打开已经下载的多媒体文件或者向它添加新的下载任务,在这个时候,我们要用多线程来打造一个反应灵敏的用户界面。多线程的另一个作用是用来提高系统的并发性。对于多CPU的PC,多线程实现了真正的并行,使程序高效的运行。对于单CPU的PC来说,操作系统会自动进行任务切换,给人的感觉是同时发生的,其实并不是真正的并发。但是一旦这些任务在执行过程中需要等待,那这种伪并行会在一个任务等待其它资源的时候执行其它任务,以解决程序中存在的瓶颈问题。

例如,一个Spider程序需要下载十个网页,要完成这个任务,Spider程序必须向服务器发出请求然后接收数据,而Spider程序等待响应是一个平颈。若采用多线程则可提高效率,因为众多的线程允许这十个网页的等待时间结合在一起,而不是让他们一个接一个地执行。如果让Spider仅等待一个网页效率是十

分底的,多线程能让Spider同时等待大量的网页。

线程一起工作时,不仅必须共享数据,而且还必须知道其它线程的状态和活动。当你创建了一个多线程时,就相当于建立了一支规定人数的军队。你让他们各自不停地去执行相同的任务。比如这些军人都是工兵,你给他们下达了排除某地地雷的任务,任务的具体内容就是:每个人都独立地去发现地雷、排除地雷、作好标记(即多线程)。这些工兵在给定范围内重复相同的动作,他们之间会协调各自的行为。任何一个工兵都不会在已经排完雷、作好标记的地区再进行排雷,也不可能几个工兵聚集在同一点上排同一个雷(即线程同步)。

为使Spider程序高效地运行,Spider程序的工作---检查众多的网页---被分成小的任务,然后把这些任务分给不同的线程。这些线程相互通信以确定获得新的工作,通过线程同步,各个Spider不会把已经完成的工作当做新的工作。

3.4 MD5算法及散列函数

实现可扩展Spider的关键之处在于设计一个合理的URL转发器,使得各爬虫能均匀地分配到属于自己爬行范围的URL。而 MD5算法及散列函数的应用是实现URL转发器的关键所在:

3.4.1 MD5算法的用途

MD5算法属于众多数字签名算法中的Hash签名算法,是一种加密算法。MD5算法是MD4的改进算法,它比MD4更复杂,但设计思想相似,输入的消息可任意长,输出结果也仍为128位(bit),特别适用于高速软件实现,是基于32-位操作数的一些简单的位操作。

该算法的输入是一个字节串,每个字节8个bit。经过补位、附加数据长度、初始化MD5参数、定义四个MD5基本的按位操作函数以及变换输入数据五个主要步骤后,能将输入的字符串变换成32位16进制数字的字符串。

必须声明的是:本系统采用MD5算法不是处于数据加密的用途,而是利用该算法的特殊功能来实现将一个个用URL表示的字符串转换成对应的数字字符串,对该字符串做相应处理后再利用散列函数实现对URL的转发。

3.4.2 散列函数的构造法

散列函数的应用成功解决了该系统中的一个关键问题---实现对URL的均匀

转发,其中经常使用的散列函数有:

(1) 数字分析法

其思想是利用通常情况下关键码位数比存储区的地址码位数多的特点,将关键码的各位进行分析,丢掉分布不均匀的位而留下分布均匀的位作为地址。(2) 除余法

其思想是选择一个适当的正整数P,用P去除关键码,余数作为散列地址,即h(key)=key%P。这个方法的关键是选取适当的P。如果P为偶数,则总是把奇数的关键码转换为奇地址,把偶数的关键码转换为偶地址;如果P是关键码的基数的幂次(对整数关键码而言,就是取P=10i),则相当于选择关键码的最后几位数字作为地址,这两情况都不好。一般P为小于基本区域长度m的最大素比较好。

(3) 折叠法

如果关键码的位数比地址位数多,且各位分布均匀,不适于用数字分析法,则可以考虑折叠法。折叠法将关键码从某些地方断开,分为几部分,其中一部分的长度(位数)等于地址码的长度(位数),与其它几部分相加,舍弃进位。(4) 中平方法

先求出关键码的平方,然后取中间几位作为地址。

(5) 基数转换法

其思想是把关键码看作是另一个进制的表示,然后再转换成原来进制的数,最后用数字分析法取其中几位作为散地址。一般转换基数大于原基数,且两个基数最好互素。

散列函数也称杂凑函数,顾名思义就是拼凑出来的,具体方法很多,在此不可以一一列举,也不存在一种通用的最佳方案。具体问题具体分析是选择散列函数的基本原则。

网络爬虫技术(新)

网络爬虫技术 网络机器人 1.概念: 它们是Web上独自运行的软件程序,它们不断地筛选数据,做出自己的决定,能够使用Web获取文本或者进行搜索查询,按部就班地完成各自的任务。 2.分类: 购物机器人、聊天机器人、搜索机器人(网络爬虫)等。 搜索引擎 1.概念: 从网络上获得网站网页资料,能够建立数据库并提供查询的系统。 2.分类(按工作原理): 全文搜索引擎、分类目录。 1> 全文搜索引擎数据库是依靠网络爬虫通过网络上的各种链接自动获取大量 网页信息内容,并按一定的规则分析整理形成的。(百度、Google) 2> 分类目录:按目录分类的网站链接列表而已,通过人工的方式收集整理网 站资料形成的数据库。(国内的搜狐) 网络爬虫 1.概念: 网络爬虫也叫网络蜘蛛,它是一个按照一定的规则自动提取网页程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。 搜索引擎使用网络爬虫寻找网络内容,网络上的HTML文档使用超链接连接了起来,就像织成了一张网,网络爬虫也叫网络蜘蛛,顺着这张网爬行,每到一个网页就用抓取程序将这个网页抓下来,将内容抽取出来,同时抽取超链接,作为进一步爬行的线索。网络爬虫总是要从某个起点开始爬,这个起点叫做种子,你可以告诉它,也可以到一些网址列表网站上获取。

现有聚焦爬虫对抓取目标的描述可分为基于目标网页特征、基于目标数据模式和基于领域概念3种。 基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。根据种子样本获取方式可分为: (1)预先给定的初始抓取种子样本; (2)预先给定的网页分类目录和与分类目录对应的种子样本,如Y ahoo!分类结构等; (3)通过用户行为确定的抓取目标样例,分为: a) 用户浏览过程中显示标注的抓取样本; b) 通过用户日志挖掘得到访问模式及相关样本。 其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。 一些算法的介绍 1> 网页分析算法

网络爬虫工作原理

网络爬虫工作原理 1 聚焦爬虫工作原理及关键技术概述 网络爬虫是一个自动提取网页的程序,它为搜索引擎从Internet网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题: (1) 对抓取目标的描述或定义; (2) 对网页或数据的分析与过滤; (3) 对URL的搜索策略。 抓取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为的关键所在。这两个部分的算法又是紧密相关的。 2 抓取目标描述 现有聚焦爬虫对抓取目标的描述可分为基于目标网页特征、基于目标数据模式和基于领域概念3种。 基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。根据种子样本获取方式可分为: (1)预先给定的初始抓取种子样本; (2)预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!分类结构等; (3)通过用户行为确定的抓取目标样例,分为: a) 用户浏览过程中显示标注的抓取样本; b) 通过用户日志挖掘得到访问模式及相关样本。 其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。现有的聚焦爬虫对抓取目标的描述或定义可以分为基于目标网页特征,基于目标数据模式和基于领域概念三种。 基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。具体的方法根据种子样本的获取方式可以分为:(1)预先给定的初始抓取种子样本;(2)预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!分类结构等;(3)通过用户行为确定的抓取目标样例。其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。 基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式。

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 0 4.1 设计环境和目标分析 0 4.1.1 设计环境 0 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (1) 4.3 控制模块详细设计 (2) 4.3 爬虫模块详细设计 (2) 4.3.1 URL管理器设计 (2) 4.3.2 网页下载器设计 (2) 4.3.3 网页解析器设计 (2) 4.4数据输出器详细设计 (3) 5 调试与测试 (3) 5.1 调试过程中遇到的问题 (3) 5.2测试数据及结果显示 (4) 6 课程设计心得与体会 (4) 7 参考文献 (5) 8 附录1 网络爬虫程序设计代码 (5) 9 附录2 网络爬虫爬取的数据文档 (8)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计 在本爬虫程序中共有三个模块: 1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况 2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。 (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL 管理器中取出一个待爬取的URL,传递给网页下载器。 (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。 (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器 3、数据输出模块:存储爬取的数据 4 网络爬虫程序详细设计 4.1 设计环境和目标分析 4.1.1 设计环境

基于python的网络爬虫设计

基于p y t h o n的网络爬虫 设计 Last updated on the afternoon of January 3, 2021

基于python的网络爬虫设计 【摘要】近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的利益,而网络爬虫是其中最为常用的一种从网上爬取数据的手段。网络爬虫,即WebSpider,是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。那么,既然网络爬虫有着如此先进快捷的特点,我们该如何实现它呢?在众多面向对象的语言中,首选python,因为python是一种“解释型的、面向对象的、带有动态语义的”高级程序,可以使人在编程时保持自己的风格,并且编写的程 序清晰易懂,有着很广阔的应用前景。 关键词python爬虫数据 1前言 本编程设计的目的和意义 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(例如传统的通用搜索引擎AltaVista,Yahoo!和Google等)作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。(2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。(3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。(4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(generalpurposewebcrawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 编程设计目及思路 学习了解并熟练掌握python的语法规则和基本使用,对网络爬虫的基础知识进行了一定程度的理解,提高对网页源代码的认知水平,学习用正则表达式来完成匹配查找的工作,了解数据库的用途,学习mongodb数据库的安装和使用,及配合python的工作。 (1)以世纪佳缘网为例,思考自己所需要的数据资源,并以此为基础设计自己的爬虫程序。 (2)应用python伪装成浏览器自动登陆世纪佳缘网,加入变量打开多个网页。 (3)通过python的urllib2函数进行世纪佳缘网源代码的获取。 (4)用正则表达式分析源代码,找到所需信息导入excel。

JAVA基于网络爬虫的搜索引擎设计与实现

本科毕业设计 题目:基于网络爬虫的搜索引擎设计与实现 系别: 专业:计算机科学与技术 班级: 学号: 姓名: 同组人: 指导教师:教师职称:协助指导教师:教师职称:

摘要 本文从搜索引擎的应用出发,探讨了网络蜘蛛在搜索引擎中的作用和地住,提出了网络蜘蛛的功能和设计要求。在对网络蜘蛛系统结构和工作原理所作分析的基础上,研究了页面爬取、解析等策略和算法,并使用Java实现了一个网络蜘蛛的程序,对其运行结果做了分析。 关键字:爬虫、搜索引擎

Abstract The paper,discussing from the application of the search engine,searches the importance and function of Web spider in the search engine.and puts forward its demand of function and design.On the base of analyzing Web Spider’s system strtucture and working elements.this paper also researches the method and strategy of multithreading scheduler,Web page crawling and HTML parsing.And then.a program of web page crawling based on Java is applied and analyzed. Keyword: spider, search engine

网络爬虫的系统实现

简述网络爬虫的系统实现 网络爬虫常常被人所忽略,特别是和搜索引擎的光环相比,它似乎有些暗淡无光。我很少看见有详细介绍爬虫实现的文章或者文档。然而,爬虫其实是非常重要的一个系统,特别是在今天这个数据为王的时代。如果你是一个刚刚开始的公司或者项目,没有任何原始的数据积累,那么通过爬虫去Internet上找到那些有价值的数据再进行数据的清洗和整理,是一个可以快速得到数据的重要手段。 本文侧重于爬虫的系统设计和实现的部分细节,内容来源于两方面,一是我这一个多月做爬虫的心得体会,但我做的爬虫规模不至于太大,对于性能的要求达不到诸如百度那么高的要求,第二则是来源于阅读的几篇文献。我找到的大部分关于爬虫的系统方面的文献都是2000年左右的,此后寥寥无几,说明关于爬虫的系统设计在10年前已经基本解决了(2000年不就是Baidu刚开始的时候么,说不定它家的爬虫也参考了这些文章^-^)。 此外,既然本文侧重于系统方面的问题,那么某些内容就不会涉及,比如如何抓取那些隐藏的web数据,如何抓取ajax的页面,如何动态调整抓取频率等等。 正文 一个正规的,完整的网络爬虫其实是一个很复杂的系统:首先,它是一个海量数据处理系统,因为它所要面对的是整个互联网的网页,即便是一个小型的,垂直类的爬虫,一般也需要抓取上十亿或者上百亿的网页;其次,它也是一个对性能要求很好的系统,可能需要同时下载成千上万的网页,快速的提取网页中的url,对海量的url进行去重,等等;最后,它确实是一个不面向终端用户的系统,所以,虽然也很需要稳定性,但偶然的当机并不会是灾难,而且,不会出现类似访问量激增这样的情况,同时,如果短暂的时间内出现性能的下滑也不算是个问题,从这一点来看,爬虫的系统设计在某些部分又变得简单了许多。

网络爬虫的设计与实现(完整版)

网络爬虫的设计与实现

摘要 网络爬虫将下载的网页和收集到的网页信息存储在本地数据库中以供搜索引擎使用,它是一个专门从万维网上下载网页并分析网页的程序。随着网络的快速发展,人们对搜索引擎的要求也越来越高,而网络爬虫的效率直接影响着搜索引擎的质量。 本课题研究的是通用网络爬虫,它是从一个或若干个初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页中抽取新链接放入到链接队列中,直到爬虫系统满足了停止条件。该课题主要涉及到了缓冲池技术,多线程技术,套接字技术,HTTP和SSL协议,正则表达式,Linux网络编程技术,PHP+Apache的使用等相关技术。 本说明书叙述的网络爬虫是以Linux C实现的,加以PHP语言编写的界面使用户更加方面的操作,利用Shell脚本和Apache服务器使得爬虫系统和界面很好的结合在一起。 关键词:网络爬虫缓冲池正则表达式 SSL协议多线程

目次 1 引言 (1) 1.1 课题选题背景 (1) 1.2 课题研究的意义 (2) 2 需求分析 (3) 2.1 功能需求分析 (3) 2.2 系统性能分析 (4) 3 系统设计 (5) 3.1 系统工作流程图 (5) 3.2 数据结构设计 (6) 3.3 系统各功能流程图 (7) 4 系统实现 (10) 4.1 相关技术分析 (10) 4.2 系统功能模块的实现 (11) 5 测试与结果 (17) 结论 (23) 致谢............................................................................................ 错误!未定义书签。参考文献. (24)

网络爬虫论文

网络爬虫 摘要随着互联网的日益壮大,搜索引擎技术飞速发展。搜索引擎已成为人们在浩瀚的网络世界中获取信息必不可少的工具,利用何种策略有效访问网络资源成为专业搜索引擎中网络爬虫研究的主要问题。文章介绍了搜索引擎的分类及其工作原理.阐述了网络爬虫技术的搜索策略,对新一代搜索引擎的发展趋势进行了展望。 关键词网络爬虫;策略;搜索引擎 概念: 网络爬虫也叫网络蜘蛛,它是一个按照一定的规则自动提取网页程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。 搜索引擎使用网络爬虫寻找网络内容,网络上的HTML文档使用超链接连接了起来,就像织成了一张网,网络爬虫也叫网络蜘蛛,顺着这张网爬行,每到一个网页就用抓取程序将这个网页抓下来,将内容抽取出来,同时抽取超链接,作为进一步爬行的线索。网络爬虫总是要从某个起点开始爬,这个起点叫做种子,你可以告诉它,也可以到一些网址列表网站上获取。 网络爬虫的构成及分类 网络爬虫又被称为做网络蜘蛛、网络机器人,主要用于网络资源的收集工作。在进行网络舆情分析时,首要获取舆情信息内容,这就需要用到网络爬虫(蜘蛛程序)这个工具,它是一个能自动提取网页内容的程序,通过搜索引擎从互联网上爬取网页地址并抓取相应的网页内容,是搜索引擎(Search Engine)的重要组成部分。 一个典型的网络爬虫主要组成部分如下: 1. URL 链接库,主要用于存放爬取网页链接。 2. 文档内容模块,主要用于存取从Web 中下载的网页内容。 3. 文档解析模块,用于解析下载文档中的网页内容,如解析PDF,Word,HTML 等。 4. 存储文档的元数据以及内容的库。 5. 规范化URL 模块,用于把URL 转成标准的格式。 6. URL 过滤器,主要用于过滤掉不需要的URL。 上述模块的设计与实现,主要是确定爬取的内容以及爬去的范围。最简单的例子是从一个已知的站点抓取一些网页,这个爬虫用少量代码就可以完成。然而在实际互联网应用中,可能会碰到爬去大量内容需求,就需要设计一个较为复杂的爬虫,这个爬虫就是N个应用的组成,并且难点是基于分布式的。 网络爬虫的工作原理 传统网路爬虫的工作原理是,首先选择初始URL,并获得初始网页的域名或IP 地址,然后在抓取网页时,不断从当前页面上获取新的URL 放入候选队列,直到满足停止条件。聚焦爬虫(主题驱动爬虫)不同于传统爬虫,其工作流程比较复杂,首先需要过滤掉跟主题不相关的链接,只保留有用的链接并将其放入候选URL 队列。然后,根据搜索策略从候选队列中选择下一个要抓取的网页链接,并重复上述过程,直到满足终止条件为止。与此同时,将所有爬取的网页内容保存起来,并进行过滤、分析、建立索引等以便进行性检索和查询。总体来讲,网络爬虫主要有如下两个阶段: 第一阶段,URL 库初始化然后开始爬取。

Python网络爬虫技术 第1章 Python爬虫环境与爬虫简介 教案

第1章Python爬虫环境与爬虫简介 教案 课程名称:Python网络爬虫技术 课程类别:必修 适用专业:大数据技术类相关专业 总学时:32学时(其中理论14学时,实验18学时) 总学分:2.0学分 本章学时:2学时 一、材料清单 (1)《Python网络爬虫技术》教材。 (2)配套PPT。 (3)引导性提问。 (4)探究性问题。 (5)拓展性问题。 二、教学目标与基本要求 1.教学目标 先对爬虫的概念和原理,及反爬虫的概念进行基本的概述,列举针对反爬虫的常用手段制定对应爬取策略。而后简要介绍了Python常用爬虫库和爬虫环境,以及用于存储爬取的数据的MySQL、MongoDB数据库。 2.基本要求 (1)了解爬虫的原理。

(2)了解爬虫运作时应遵守的规则。 (3)了解反爬虫的目的和常用手段。 (4)了解Python常用爬虫库。 (5)掌握MySQL、MongoDB数据库的配置方法。 三、问题 1.引导性提问 引导性提问需要教师根据教材内容和学生实际水平,提出问题,启发引导学生去解决问题,提问,从而达到理解、掌握知识,发展各种能力和提高思想觉悟的目的。 (1)爬虫能够做什么? (2)爬虫能爬哪些数据? (3)Python语言在爬虫方面有哪些优势? 2.探究性问题 探究性问题需要教师深入钻研教材的基础上精心设计,提问的角度或者在引导性提问的基础上,从重点、难点问题切入,进行插入式提问。或者是对引导式提问中尚未涉及但在课文中又是重要的问题加以设问。 (1)爬虫能够应用在那些场景? (2)爬虫的原理是什么? 3.拓展性问题 拓展性问题需要教师深刻理解教材的意义,学生的学习动态后,根据学生学习层次,提出切实可行的关乎实际的可操作问题。亦可以提供拓展资料供学生研习探讨,完成拓展性问题。 (1)爬虫是不是万能的? (2)爬虫在数据分析有哪些作用?

网络爬虫知识

网络爬虫 1.工作原理 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。基本步骤: 1)人工给定一个URL作为入口,从这里开始爬取。 2)用运行队列和完成队列来保存不同状态的链接。 3)线程从运行队列读取队首URL,如果存在,则继续执行,反之则停止爬取。 4)每处理完一个URL,将其放入完成队列,防止重复访问。 5)每次抓取网页之后分析其中的URL(URL是字符串形式,功能类似指针),将经过过滤的合法链接写入运行队列,等待提取。 6)重复步骤 3)、4)、5) 2.关键技术 1.对抓取目标的描述或定义 2.对网页或数据的分析与过滤 3.对URL的搜索策略

3.网页搜索策略 1.广度优先 广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL 在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。 2.深度优先 即从起始网页开始,选择一个URL,进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地深入追踪下去,处理完一条路线之后再处理下一条路线。该算法在设置抓取深度时很容易导致爬虫的陷入(trapped)问题,同时每深入一层,网页价值和PageRank都会相应地有所下降。这暗示了重要网页通常距离种子较近,而过度深入抓取到的网页却价值很低,所以目前常见的是广度优先和最佳优先方法,很少使用深度优先策略。 3.最佳优先 最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为“有用”的网页。存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。将在第4节中结合网页分析算法作具体的讨论。研究表明,这样的闭环调整可以将无关网页数量降低30%~90%。 4.网页分析算法 1.网络拓扑 基于网页之间的链接,通过已知的网页或数据,来对与其有直接或间接链接关系的对象(可以是网页或网站等)作出评价的算法。又分为网页粒度、网站粒度和网页块粒度这三种。 a)网页粒度的分析算法

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计范文

山东建筑大学计算机网络课程设计基于Python的网络爬 虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 (1) 4.1 设计环境和目标分析 (1) 4.1.1 设计环境 (1) 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (2) 4.3 控制模块详细设计 (3) 4.3 爬虫模块详细设计 (3) 4.3.1 URL管理器设计 (3) 4.3.2 网页下载器设计 (4) 4.3.3 网页解析器设计 (5) 4.4数据输出器详细设计 (6) 5 调试与测试 (6) 5.1 调试过程中遇到的问题 (6) 5.2测试数据及结果显示 (7) 6 课程设计心得与体会 (7) 7 参考文献 (8) 8 附录1 网络爬虫程序设计代码 (8)

9 附录2 网络爬虫爬取的数据文档 (15)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计

防采集与反爬虫常见的策略以及解决思路

https://www.wendangku.net/doc/e95558888.html, 防采集与反爬虫常见的策略以及解决思路 打从有采集这件事情开始 就有防采集的诞生 大仙爬虫从业十年 见过各种防采集策略 今天,我们就一起来吹吹牛B 说说这些年遇到的各种防采集策略 1、限制IP单位时间访问次数还有频率 背景:没有哪个常人一秒钟内能访问相同网站N次(不管是不是同一个网页) 解决办法:一般遇到这种情况我们就放缓采集频率,不管你写代码添加Sleep,或者在我们八爪鱼里面设置间隔时间都可以解决 进化1:有些高级点的防采集策略,他甚至监控到每个请求的频率,如果一直处于同一个频率,比如一秒一次,他也是会封。 解决办法:这种情况一般就需要我们在采集间隔里面加上随机数,每次访问的频率相对随机。 进化2:有些更残忍的防采集策略,他甚至会监控每IP每天或每时段请求网页的数量。 因为他可以通过数据分析,知道大体上他真实的用户一般最多会访问他多少网页,如果超过,他也照样封。

https://www.wendangku.net/doc/e95558888.html, 解决办法:这种情况也就只有用多IP或者多服务器来解决了,虚拟出许多不同的终端在访问,平摊访问资源。八爪鱼在这块也提供了代理IP池套餐与旗舰版云服务器集群来保障。 2、验证码 背景:验证码天生就是一个识别你到底是人还是机器的神器

https://www.wendangku.net/doc/e95558888.html, 解决办法: 这一招是被用烂的一招,现在普通的验证码,即使加了混淆,都可以通过图像识别技术 给破解了,所以市面就多了好多诡异的验证码,最经典的,应该算是12306的验证码 了吧。但是再复杂的验证码,包括那些中文成语,中文加减乘除之类的,都是有破解之法。因为这世上还有打码平台在,就是一种人工帮你输入验证码的平台。

网络爬虫工具如何爬取网站数据

https://www.wendangku.net/doc/e95558888.html, 网络爬虫的基本原理是什么 目前网络爬虫已经是当下最火热的一个话题,许多新兴技术比如VR、智能机器人等等,都是依赖于底层对大数据的分析,而大数据又是从何而来呢?其中最常用的手段即是使用网络爬虫工具去获取。提起网络爬虫工具,很多小伙伴还可能没这么接触过。本文将解决以下问题:网络爬虫是什么,基本原理是什么;网络爬虫工具是什么;八爪鱼采集器是什么;三者的关系是什么。 先上重点:八爪鱼是一个网页采集器,网页采集器是一种专门的爬虫工具。 爬虫、网页采集器、八爪鱼关系图

https://www.wendangku.net/doc/e95558888.html, 一、网络爬虫是什么,原理是什么 爬虫是什么:网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。又被称为网页蜘蛛,聚焦爬虫,网络机器人。在FOAF社区中间,更经常的称为网页追逐者,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 爬虫工作原理:网络爬虫系统一般会选择一些比较重要的、出度(网页中链出超链接数)较大的网站的URL作为种子URL集合。以这些种子集合作为初始URL,开始数据抓取。 其基本工作流程如下: 1)将这些种子URL集合放入待抓取URL队列。 2)从待抓取URL队列中,取出待抓取URL,解析DNS,并且得到主机的ip,并将URL 对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。3)分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL 队列,从而进入下一个循环。如此反复进行,直到遍历了整个网络或者满足某种条件后,才会停止下来。

https://www.wendangku.net/doc/e95558888.html, 爬虫工具原理 二、网页采集器是什么八爪鱼采集器是什么 网页采集器:这里讲的网页采集器,专门指会根据用户的指令或者设置,从指定的网页上获取用户指定内容的工具软件。严格来讲,这里说的网页采集器也是爬虫的一种。 八爪鱼采集器:八爪鱼采集器就是一种网页采集器,用户可以设置从哪个网站爬取数据,爬取那些数据,爬取什么范围的数据,什么时候去爬取数据,爬取的数据如何保存等等。 八爪鱼采集的核心原理是:模拟人浏览网页,复制数据的行为,通过记录和模拟人的一系列上网行为,代替人眼浏览网页,代替人手工复制网页数据,从而实现自动化从网页采集数据,然后通过不断重复一系列设定的动作流程,实现全自动采集大量数据。 八爪鱼采集器可应对各种网页的复杂结构(AJAX页面、瀑布流等)和防采集措施(登录、

网络爬虫设计与实现毕业设计论文

毕业设计(论文)说明书 题目:网络爬虫设计与实现 学院软件学院 专业软件工程

毕业设计(论文)任务书题目:网络爬虫设计与实现

独创声明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。 作者签名: 二〇一〇年九月二十日 毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定) 作者签名: 二〇一〇年九月二十日

一、原始依据(包括设计或论文的工作基础、研究条件、应用环境、工作目的等。) 互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景。搜索引擎作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性。不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。所以需要一个能基于主题搜索的满足特定需求的网络爬虫。 为了解决上述问题,参照成功的网络爬虫模式,对网络爬虫进行研究,从而能够为网络爬虫实现更深入的主题相关性,提供满足特定搜索需求的网络爬虫。 二、参考文献 [1]Winter.中文搜索引擎技术解密:网络蜘蛛 [M].北京:人民邮电出版社,2004年. [2]Sergey等.The Anatomy of a Large-Scale Hypertextual Web Search Engine [M].北京:清华大学出版社,1998年. [3]Wisenut.WiseNut Search Engine white paper [M].北京:中国电力出版社,2001年. [4]Gary R.Wright W.Richard Stevens.TCP-IP协议详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议 [M].北京:机械工业出版社,2002 年1月. [5]罗刚王振东.自己动手写网络爬虫[M].北京:清华大学出版社,2010年10月. [6]李晓明,闫宏飞,王继民.搜索引擎:原理、技术与系统——华夏英才基金学术文库[M].北京:科学出版社,2005年04月.

网络爬虫

网络爬虫 1.什么是爬虫 2.网络爬虫工具 3.网页搜索策略 4.信息获取 1 . 什么是网络爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式。 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 《把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络爬虫就可以用这个原理把互联网上所有的网页都抓取下来。下面大体介绍主题爬虫的工作原理。》

2 . 网络爬虫工具 1.Heritrix ——是一个开源,可扩展的web爬虫项目。Heritrix是一个爬虫框架,可加入一些可互换的组件。 2.WebSPHINX ——是一个Java类包和Web爬虫的交互式开发环境。Web爬虫是可以自动浏览与处理Web页面的程序。 3.WebLech——是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。 4.Arale ——主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。 5.Jspider——是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误,网站内外部链接检查,分析网站的结构 6.Spindle——是一个构建在Lucene工具包(是一个基于Java 的全文信息检索工具包)之上的Web索引/搜索工具. 7.Arachnid(蛛形纲动物)——是一个基于Java的网络爬虫框架. https://www.wendangku.net/doc/e95558888.html,RM ——LARM能够为Jakarta Lucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。。 9.JoBo——是一个用于下载整个Web站点的简单工具。它本质是一个Web Spider。它的主要优势是能够自动填充form。 10.snoics-reptile——是用纯Java开发的,用来进行网站镜像抓取的工具,

网络爬虫基本原理

网络爬虫基本原理 网络爬虫根据需求的不同分为不同种类: 1. 一种是爬取网页链接,通过url链接得到这个html页面中指定的链接,把这 些链接存储起来,再依次以这些链接为源,再次爬取链接指向html页面中的链接……如此层层递归下去,常用的方法是广度优先或者深度优先,根据爬取层次需求不同而选择不同的方法达到最优效果,爬虫的效率优化是一个关键。搜索引擎的第一个步骤就是通过爬虫得到需要索引的链接或数据,存放于数据库,然后对这些数据建立索引,然后定义查询语句,解析查询语句并利用检索器对数据库里的数据进行检索。 2. 一种是爬取数据信息,如文本信息、图片信息等,有时需要做数据分析,通 过某种手段来获取数据样本以供后续分析,常用的方法是爬虫获取指定数据样本或利用现有的公共数据库。本文的微博爬虫和新闻数据爬取都属于第二种类,根据自定义搜索关键字爬取微博信息数据。 3. 对于网络爬虫原理,其实并不复杂。基本思路是:由关键字指定的url把所 有相关的html页面全抓下来(html即为字符串),然后解析html文本(通常是正则表达式或者现成工具包如jsoup),提取微博文本信息,然后把文本信息存储起来。 重点在于对html页面源码结构的分析,不同的html需要不同的解析方法;还有就是长时间爬取可能对IP有影响,有时需要获取代理IP,甚至需要伪装浏览器爬取。(主要是针对像新浪等这些具有反扒功能的网站,新闻网站一般不会有这样的情况)。 对于微博,通常情况下是必须登录才能看到微博信息数据(比如腾讯微博),但是有的微博有搜索机制,在非登录的情况下可以直接通过搜索话题来查找相关信息(如新浪微博、网易微博)。考虑到某些反爬虫机制,如果一个账号总是爬取信息可能会有些影响(比如被封号),所以本文采用的爬虫都是非登录、直接进入微博搜索页面爬取。这里关键是初始url地址。 网络爬虫是搜索引擎抓取系统的重要组成部分。爬虫的主要目的是是将互联网上的网页下载到本地形成一个活互联网内容的镜像备份。这篇博客主要对爬虫及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程 通用的网络爬虫的框架如图所示:

(精品)网络爬虫的设计与实现毕业论文

摘要 网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息等。 本文通过JAVA实现了一个基于广度优先算法的多线程爬虫程序。本论文阐述了网络爬虫实现中一些主要问题:为何使用广度优先的爬行策略,以及如何实现广度优先爬行;为何要使用多线程,以及如何实现多线程;系统实现过程中的数据存储;网页信息解析等。 通过实现这一爬虫程序,可以搜集某一站点的URLs,并将搜集到的URLs 存入数据库。 【关键字】网络爬虫;JAVA;广度优先;多线程。

ABSTRACT SPIDER is a program which can auto collect informations from internet. SPIDER can collect data for search engines, also can be a Directional information collector, collects specifically informations from some web sites, such as HR informations, this paper, use JAVA implements a breadth-first algorithm multi-thread SPDIER. This paper expatiates some major problems of SPIDER: why to use breadth-first crawling strategy, and collect URLs from one web site, and store URLs into database. 【KEY WORD】SPIDER; JA V A; Breadth First Search; multi-threads.

网络爬虫的设计

网络爬虫的设计与实现 王 娟,吴金鹏 (贵州民族学院计算机与信息工程学院,贵州贵阳550025 )摘 要:搜索引擎技术随着互联网的日益壮大而飞速发展。作为搜索引擎不可或缺的组成部分,网络爬虫的作用显 得尤为重要,它的性能直接决定了在庞大的互联网上进行网页信息采集的质量。设计并实现了通用爬虫和限定爬虫。 关键词:网络爬虫;通用爬虫;限定爬虫 中图分类号:TP393 文献标识码:A 文章编号:1672-7800(2012)004-0136- 02作者简介:王娟(1983-),女,湖南邵东人,硕士,贵州民族学院讲师,研究方向为数据挖掘、网络安全;吴金鹏(1989-) ,男,山西晋中人,贵州民族学院本科生,研究方向为计算机科学与技术。 0 引言 网络爬虫也称网络蜘蛛,它为搜索引擎从万维网上下载网页,并沿着网页的相关链接在Web中采集资源, 是一个功能很强的网页自动抓取程序, 也是搜索引擎的重要组成部分,爬虫设计的好坏直接决定着整个搜索引擎的性能及扩展能力。 网络爬虫按照系统结构和实现技术,大致可以分为:通用网络爬虫、主题网络爬虫、增量式网络爬虫、深层网络爬虫。实际应用中通常是将几种爬虫技术相结合。 1 通用爬虫的设计与实现 1.1 工作原理 通用网络爬虫根据预先设定的一个或若干初始种子URL开始,以此获得初始网页上的URL列表, 在爬行过程中不断从URL队列中获一个个的URL,进而访问并下载该页面。页面下载后页面解析器去掉页面上的HTML标记后得到页面内容,将摘要、URL等信息保存到Web数据库中,同时抽取当前页面上新的URL,保存到URL队列,直到满足系统停止条件。其原理如图1所示。1.2 爬行策略 为提高工作效率,通用网络爬虫会采取一定的爬行策略优先爬取重要的网页。常用的有深度优先和宽度优先策略。宽度优先算法的设计和实现相对简单,可以覆盖尽可能多的网页,是使用最广泛的一种爬行策略。 一个爬虫如何利用宽度优先遍历来抓取网页呢?在爬虫中,每个链接对应一个HTML页面或者其它文件,通 常将HTML页面上的超链接称为“子节点” 。整个宽度优先爬虫就是从一系列的种子节点开始,把这些网页中的 “子节点”提取出来,放到队列中依次进行抓取。被访问过的节点放入到另一张表中, 过程如图2所示 。 图1 通用爬虫工作流程 图2 宽度优先爬虫过程 1.3 爬虫队列设计 爬虫队列设计是网络爬虫的关键。因为爬虫队列要 存储大量的URL,所以依靠本地链表或者队列肯定是不够的,应当寻找一个性价比高的数据库来存放URL队列,Berkeley  DB是目前一种比较流行的内存数据库。根据爬虫的特点,Hash表成为了一种比较好的选择。但是在使用Hash存储URL字符串的时候常用MD5算法来对URL进行压缩。在实现了爬虫队列之后就要继续实现Visited表了。如何在大量的URL中辨别哪些是新的、哪些是被访问过的呢?通常使用的技术就是布隆过滤器(Bloom Filter)。利用布隆过滤器判断一个元素是否在集合中是目前比较高效实用的方法。1.4 设计爬虫架构 爬虫框架结构如图3所示 。 图3 爬虫结构

相关文档
相关文档 最新文档