分布式多主题网络爬虫系统的研究与实现

分布式多主题网络爬虫系统的研究与实现
分布式多主题网络爬虫系统的研究与实现

内自动下载网页的系统,按照一定优先级次序和主题相关度甄别获取页面。与通用爬虫不同,主题爬虫[1]并不追求高的覆盖率,而是选择性地取主题相关页面,具有资源占用低、索引数据库更新方便、缓存页面精确的优点。但是其实现存在以下难点:如何对主题建模,如何判定页面与主题的相关性以及如何在一个爬虫系统中容纳不同的主题抓取等。

本文设计了一种针对旅游领域的搜索引擎Broker,包括一系列主题搜索(如机票、酒店)的子系统,它们共用1个爬虫,主要介绍了该分布式多主题网络爬虫系统的关键技术。

2 主题网络爬虫现状

网络爬虫程序从URL种子队列开始爬取,不断从当前页面抽取新的URL放入待爬行队列,直到满足系统设计的广度和深度策略的停止条件。通用爬虫并不在意页面采集的顺序,主题爬虫则需要高效抓取主题相关的网页,其工作流程如图1所示。

图1 主题网络爬虫工作流程

主题网络爬虫根据一定的网页分析算法过滤与主题无关的链接,遵循一定的调度策略从队列中选择下一步要抓取的URL,同时系统存储的网页经过分析后的结果会反馈回来指导后续的抓取过程。

综上可见,主题爬虫与通用爬虫在系统需求、工作流程和核心算法上都有根本差异,虽然可以从传统爬虫架构中汲取一些成熟的性能策略(DNS缓存、URL数据结构等),但是系统架构依然需要大量改进。商用主题搜索系统,如Google 的新闻搜索和学术搜索,出于商业秘密的考虑其技术资料很基金项目:国家“863”计划基金资助项目“融合型旅游在线服务业务的研究”(2008AA01A307)

作者简介:白 鹤(1982-),男,博士研究生,主研方向:Web信息挖掘;汤迪斌,博士研究生;王劲林,研究员、博士生导师

收稿日期:2009-03-06 E-mail:web.baih @https://www.360docs.net/doc/4f16638675.html,

—13—

—14—

少,无从参考。从学术界来说,有代表性的主题Crawler 架构主要有以下3种:

(1)基于分类器的架构[2]。

网络爬虫使用规范的主题分类,从用户指定的起点(书签)开始,用户将感兴趣的网页做上标记,并将它们归类。主要组成部分包括分类器、过滤器和爬行器。

(2)基于用户学习的架构[3]。用户的访问模式可靠地反映资源的主题相关性,并且可以即时反映网络链接的变更等情况。实现方式主要有日志挖掘和用户标注。主要模块是对用户浏览模式的学习模块。

(3)基于数据抽取器的架构。采用针对网页内容的分析算法进行数据抽取,得到的原始数据将由数据分析器解析和标注,获得目标页面URL 进行存储和分发。

以上3种架构针对不同描述对象,采用各自核心的网页分析算法[4]。在覆盖率方面,采用分类器的方法最优,但是它需要实时计算页面和链接的相关度,时空复杂度高,适用于不要求结构化结果的主题搜索。基于用户学习的系统能够真实反映用户兴趣,准确率优于分类器算法,但是其原始数据需要用户协作或者需要掌握商业网站日志,可操作性不强。基于数据抽取器算法覆盖率和适应性稍差,每个目标站点都需要启发式学习,但是其抓取过程中效率和准确率都很高,适用于需要精确结果的主题搜索。

本文开发的旅游领域主题搜索系统Broker 提供给用户主题化丰富的输入接口,并返回精确的结构化内容,它的爬虫采用了基于数据抽取器的架构。涉及这种架构的现有文献都是概要性描述,同时没有解决多主题并存情况下可能出现的URL 分配和算法兼容等问题。本文以Broker 爬虫系统为基础,提出一个容纳多主题的分布式架构,介绍其中URL 搜索策略、URL 分配策略、多主题控制策略等关键技术。

3 分布式多主题爬虫系统架构

Broker 爬虫系统采用基于数据抽取器的分布式系统结构,由一个中心主控节点和分布式的爬虫服务器组成,整个系统相互配合协同工作,其整体架构见图2。

图2 Broker 爬虫系统整体架构

管理门户是爬虫系统对管理员提供的Web 接口,可以查看中心和子服务器的日志,设置添加主题,更新某个主题的URL 种子,配置主题的抓取频率等参量,控制爬虫的状态等。中心节点和分布爬虫是系统的主体,完成主题操作、数据抽取器的学习、页面分析以及目标页面的存储。 3.1 中心节点服务器

Broker 爬虫中心主控节点是控制中枢,主要包括URL 控制器、抽取器学习模块和主题控制模块,见图3。

(1)主题控制模块

本模块完成关于主题的操作,包括对主题的描述、添加和删除;控制主题抓取频率;编辑每个主题种子队列。种子队列选取对应主题的权威页面,即该主题内比较有代表性的可以作为一系列目标信息初始位置的页面,如酒店搜索的主题爬虫,其权威页面就是订房网中包含查询Form 的网页或其酒店信息列表的起始页。先使用通用搜索引擎检索主题描述文字,得到对应主题的扩展页面集合,因为数量有限,所

图3 Broker 爬虫中心节点架构

(2)抽取器学习模块

本模块采用基于内容的网页分析算法,从URL 种子入

手,训练形成针对种子代表的权威站点的数据抽取器。满足上一模块需求的种子主要分为2类:Deep Web [5]网页和数据密集型(Data-intensive)网页,采用记忆特征的基本分类器可以区分2种页面,针对Hidden Web 页面使用对旅游领域词库经过改进的特定领域基于实例的查询探测方法[6]匹配到合适完备的接口输入。针对后者的结构化特征,采用页面块和目录发现的策略进行底层页面的URL 抽取。经过以上过程,可以找到URL 种子适用的数据抽取器(分析算法路径和搜索深度),在子节点抓取过程中,本模型指导种子代表的目标站点的页面解析。由于数据抽取器算法不是架构的主要部分,因此本文不作具体介绍。

(3)URL 控制器

URL 模块主要负责中心节点内的URL 队列的排序,并根据各子节点负载反馈进行任务分割。因为采用二级URL 配置策略,所以中心节点只存储种子URL ,排序算法按照主题抓取频率和种子所代表站点权重确定优先级,并计算单位时间需要的并发量。任务分割采用加权最小连接调度方法。 3.2 分布式子节点服务器

Broker 爬虫分布式子节点是爬取的具体实施者,主要包括URL 控制器、数据抽取器、搜索控制器、网页抓取器和状态日志,见图4。

图4 Broker 爬虫子节点架构

(1)URL 控制器

子节点中的URL 控制器接收来自中心节点分发的种子URL 和网页提取的URL ,存储到URL 数据库,存储使用Trie 型数据结构,可以对新加入URL 进行重复检测和快速插入。URL 数据库中应用了一个以站点为单位的更新策略,可以保证内容的更新不受重复性检测的阻滞。经过检测的合法URL 按照二级URL 加权传递排序算法,接收父页面传递过来的权

重并结合搜索策略中的深度进行优先级的排序,传递给网页抓取器。

(2)数据抽取器

来自URL队列的Deep Web对象采用中心节点训练好的查询探测算法,经过具体参量的模式匹配输入,形成新的URL,相当于表单提交后的对象,传递给网页抓取器。本模块另一输入来自经搜索控制器判决后的页面,URL搜索策略保证这是数据密集型页面,按照训练好的页面块发现算法,提取到2类关心的URL:翻页信息和下级数据页面信息,送入URL数据库。

(3)网页抓取器

这是一个多线程并行模块,负责按照HTTP协议采集页面。基本步骤包括:1)按照页面URL抽出目标站点地址和端口号,与该地址和端口建立网络连接;2)由页面URL组装HTTP请求头,发送到目标站点,若超过一定时间未收到应答消息,则终止抓取该页面并将其丢弃;否则继续下一步骤;

3)分析应答消息,若返回的状态码为2xx,则返回正确页面,进入下一步骤;若状态码为301或302,表示页面被重定向,从应答头提取出新的目标URL,返回上一步;若返回其他状态码,说明页面连接失败,终止抓取该页面并将其丢弃;

4)从应答头中提取出日期、长度、页面类型等页面信息;

5)读取页面的内容,对于长度较大的页面,采用分块读取再拼接的方法保证页面内容的完整性。

(4)搜索控制器

本文搜索策略采用结合具体应用改进的最佳优先搜索策略,经过对Hidden Web和目录块式页面的分析,目标对象大部分是正文式页面,抓取深度不超过3级。本模块对抓取的网页内容依照搜索策略进行判决,符合搜索深度的正文式页面存入页面库,等待索引模块的结构化,否则,传递给对应的数据抽取器进行页面分析和URL提取。

(5)爬虫日志

本模块按照时间戳以纯文本方式记录子节点爬取的状态信息,包括对象、时刻、当前系统并发连接数、系统CPU和内存占用情况等。该日志可以用于分析研究子服务器性能瓶颈,并能够反馈给主节点作为URL分割的依据。

4 关键技术

Broker爬虫的系统架构实现了对爬虫的分布子节点可控可调节,对架构提供支撑的是本文设计并实现的几个核心算法策略。

4.1 分类标注的多主题策略

主题爬虫系统的一个关键问题是如何让一个爬虫系统兼容多个主题,或者说一个爬虫系统如何同时完成多个主题的爬取任务。直接办法是在不同硬件平台上运行不同的主题爬虫,这种方法的自适应性和扩展性差,并且不能整体调度资源而造成浪费。因此,解决多主题兼容的问题能够大幅提高主题爬虫的扩展性和移植性,同时优化资源配置。

已查阅的文献中较少涉及这个问题,本文设计了一种适用于数据抽取器架构的基于分类标注的多主题策略:(1)对主题目标进行描述,定义简洁的词语对主题进行标记。主题的数据结构包括名字、描述、标记、频率。(2)初始化主题的种子URL列表,这一步通过通用引擎搜索得到针对主题描述的权威链接,并人工借助一定先验知识得到合适的权威页面。

(3)带有标记信息的不同主题的种子压入主节点的URL队列,因为种子的数据抽取器已经建模,从这个模块到之后处理都细化到URL级别,屏蔽了主题的差异,不同主题的分发抓取按照统一流程。(4)获取的目标正文页面根据URL结构中传递下来的主题标记选择合适的库进行存储。

本策略的关键在于系统提前完成了对不同主题内种子站点的数据抽取器学习,能够在随后抓取过程中屏蔽主题的差异。如果是基于分类器的主题爬虫系统,因为算法的缘故,爬虫一级还需要计算相关性,与主题反馈互动,不容易实现多主题兼容的爬虫系统。

4.2 任务分割算法

在分布式爬虫系统中,爬取任务的均衡分配是影响系统性能和资源配置的关键问题之一。目前分布式爬虫系统多采用集中式或基于二级散列映射的[7]任务分割策略。这2种策略只是解决均匀分配的问题,没有考虑URL优先级的影响和子节点负载情况。主题爬虫的任务分割策略应该兼顾URL队列的排序和基于子节点负载的均衡调度。针对本文的系统架构,任务分割算法包括了二级URL加权传递排序算法和基于散列的加权最小连接URL调度方法。

在中心节点和子节点中的URL队列中设计二级加权传递的排序算法。在中心节点级,其URL队列主体是不同主题的URL种子,影响爬取质量的种子属性包括站点重要性、抓取频率和搜索深度。种子是主题体现在对应站点的权威页面,其页面重要性可以映射到站点在这一主题领域的影响力,页面重要性评价采用基于网络拓扑的PageRank算法作为标准,Google给出的页面PR值是整数,理论区间范围为(0~10),但经过统计,大部分页面的PR值在7以下,所以,为了均匀归一化,站点重要性的影响因子采用线性函数计算,具体为对应种子的PR和URL队列中PR最小值的差与PR最大值和最小值差的比值:

()

()()

i

i

PR low PR

top PR low PR

α

?

=

?

搜索深度是指页面在最佳优先策略中规定的层数,一共3级,有Hidden Web表单的种子深度为1,目录块结构的数据密集型页面深度为2,正文导向的目标页面深度为3,搜索深度的权重影响因子为其本身深度的倒数。

1/

i i

L

β=

抓取频率是管理员根据搜索前台需求和更新策略设置的时间间隔对应的影响因子,更新间隔短,抓取频率大,则种子优先级较高。抓取频率分为种子频率和主题频率,根据主题性质设置的主题频率是必需的,而种子频率如果没有设置,其值就继承主题频率。抓取间隔的样本值分布差别大、跳跃性强,比如转让车票模块因为即时性要求高,其主题设置间隔为15 min;但是旅馆预定因为价格变化幅度不大,其设置间隔以天为单位,如果完全遵循其线形函数规范化,则频率影响因子会出现一值独大然后快速衰减的情况,此因子就成了排序的决定因素,显然不合理。经过研究比较,首先采用线性归一化函数后得到结果,然后加权,最后经过Sigmoid 函数均匀处理。Sigmoid函数光滑均匀严格单调,阈值范围 为(0.5~1),具体计算如下:

()

()()

i

i

F low F

x

top F low F

?

=

?

其中,F i是种子的抓取频率;Low和Top分别取得队列中频率最大值和最小值。

—15—

—16—

1

1e i

i ax

γ?=

+

a 取值大于1,是线性平滑结果后的加权因子,目标是扩大首步计算结果。按照Sigmoid 函数曲线判断,a 在系统中取2.5。由此可以得出,种子的优先级权重是3个影响因子的算术平均:

3

i

i i

i Q αβγ++= 然后根据Q i 取值进行递减排序,因为中心节点队列种子数目

有限,所以采用插入排序,可以节省内存消耗,时间也类似于其他排序算法。子节点中的URL 队列继承了中心节点的URL 权重算法,经过分析发现,系统中基于抽取器导向的爬虫只会在种子限定的站点内爬取,Q 值中抓取频率和站点重要性2个因子不变,只会随搜索深度因子变化,计算如下:

3

prev prev Q Q ββ

?=?

其中,Q prev 是从父URL 传递下来的权值;βprev 是父URL 的搜索深度因子;β是对象URL 的搜索深度因子。子节点队列URL 数目多,采用二分法排序用空间换取效率的提高。经过

理论分析和实际测试,

URL 权值在0-1之间呈均匀平滑分布,避免了1个因子的剧烈衰减造成的单一因素起决定作用的情况,同时兼顾了目标对象、抓取策略和搜索深度3个主要因素,很好地体现了优先级差异。该算法实现的一种特殊情况是面对搜索器传来的即使请求,此时优先级最高,Q 值设为1,并且传递过程不衰减。

中心节点队列的分割采用了加权最小连接调度(Weighted Least-Connection Scheduling)算法。各个子节点用相应的权值表示其处理性能。缺省权值设为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建连接数和其权值呈正比。加权最小连接调度的算法流程如下:假设有一组服务器S={S 0, S 1, …, S n -1},W (S i )表示服务器S i 的权值,C (S i )表示服务器S i 的当前连接数。所有服务器当前连接数的总和为()i CSUM C S =∑ (i =0, 1, … , n -1)。

当前的新连接请求会被发送服务器S m ,当且仅当服务器S m 满足以下条件再发送种子:

() / )() / min {

} ()()()()

min {

}()()m i m i m m i C S CSUM C S CSUM

W S W S C S C W S W S ι=Σ?= (i =0, 1, … , n -1)

其中,W (S i )不为0。子节点的日志每隔一定时间反馈到中心

节点,子服务器连接数目C (S i )通过读取日志获得。本方法比较子节点连接数和先验权值的比值,得到最小负载的子节点,分配新的爬取任务。

4.3 基于Trie 结构的URL 存储

对于主题搜索的子节点,URL 数据库中内部数据可达到105的数量级,且处在爬取必经的模块,数据量大且操作频繁,URL 存储成为影响爬虫性能瓶颈之一。

URL 数据库的核心操作是搜索URL ,对于字符串查询,基于Trie 多叉树结构算法效率优于二叉树和Hash 表查找算法,其算法时间复杂度与组成树的节点无关,只与检索对象字符串中字符个数有关。在Trie 结构中,URL 字符串本身存储在从根节点到叶子节点之间的内部节点,而URL 的元数据存储在叶子节点。Trie 的存取采用了内存动态缓存和磁盘静态保存的策略,在2种情况下内存和磁盘中的Trie 数据进行I/O 交换:主节点分发种子进入URL 数据库时,首先检索种

子在内存多叉树中是否存在,是就继续爬取,否则,读取磁盘文件中以此种子为顶节点的Trie 子树,与内存中的Trie 树合并,这样该站点提取的URL 可以在内存树中进行重复性检测;后一种是“滞后合并”的存储策略,当该数据结构占用的内存空间超过一定大小时,将内存的Trie 树与磁盘文件中的Trie 数据结构进行合并。“按需缓存,滞后合并”的策略实现内存与磁盘I/O 次数最少,同时保证了URL 的重复性检测。

URL 重复性检测是基于最佳优先搜索策略定义的页面深度实现,如果深度为3的目标页面在Trie 树内搜索到有记录,说明已抓取过;与上次抓取时间比较,判断是否在主题定义的抓取间隔内,是则释放资源,否则要更新Trie 树缓存并继续抓取。把检测的对象局限于底层页面的原因是其上级页面动态性强,会产生短时间内重复抓取的情况。

5 实验仿真

本文使用C 语言搭建原型的Broker 爬虫系统,使用2台主机,主频P4 2.8 GHz ,内存2 GB ,操作系统是FreeBSD 。其中,一台作中心节点并兼顾运行分节点爬虫,一台单独作分节点。2台机器内部通过100 Mb/s 交换机连接到一个共享6 Mb/s 的电信网关。

Broker 系统是旅游业务的搜索引擎,通过管理门户为爬虫设置了4个主题以及抓取间隔:飞机票为1天、火车票转让为15 min 、酒店预订为7天、旅游新闻为1 h ;并为每个主题选择了5个以内的种子URL ,一共是16个种子;对种子进行并行的数据抽取器的训练。单独和兼顾主节点任务的子爬虫其权重分别设置为1和0.5,爬行并行线程上限设置为50和25。对建模成功的种子启动爬取,运行了8 h 。统计结果如下:

原始种子数目 16 成功建模种子数目 9 URL 总数目 236 076 爬取URL 数目 193 583 请求失败URL 数目

34 697 URL 下载(页面获取)速度/(url·s -1

) 5.17 有效页面获取速度/(page·s -1

)

3.83

(1)数据抽取器算法质量

成功建模种子是指在数据抽取器训练中可以得到针对种子站点成熟的页面分析算法和搜索路径,其与原始种子数目的比值是56.2%。有效页面是页面库存储的数据密集型页面,其与URL 下载速度是74.1%,即为有效比率(harvest rate)。

(2)爬虫性能

Google 早期网络爬虫采用4台服务器,其中一台作为主控,另3台作为爬虫,每个爬虫保持平均并行300个连接,峰值时刻每秒可以下载100个页面,相当于900个并行连接4台服务器满负荷运行其URL 下载(页面获取)速度是100个页面;本实验系统峰值75个,并行连接2台服务器,其速度值是5.17个页面,而且没有连接搜索器,不会有即时的请求,只是按照设置的主题间隔进行循环抓取,系统资源会出现闲置,通过日志可计算得到空闲状态点27%;计算这些因素,得出系统满负荷抓取速度7 url/s ,单连接的速度与Google 早期接近,超过了文献[8]智能专题爬虫的速度,考虑到带宽和服务器因素,系统性能已达到较高水平。URL 总数是2个子

爬虫URL 数据库数量之和,

记录的是经过页面分析抽取出来的相关性链接;爬取URL 是日志统计出来发出HTTP 请求的

(下转第19页)

山东建筑大学计算机网络课程设计基于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 设计环境

网络爬虫工作原理

网络爬虫工作原理 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)通过用户行为确定的抓取目标样例。其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。 基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式。

网络爬虫技术(新)

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

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

网络爬虫课程设计文档

网络爬虫 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 简单来说,网络爬虫的基本工作流程可以分为如下几步: 1.首先选取一部分精心挑选的种子URL; 2.将这些URL放入待抓取URL队列; 3.从待抓取URL队列中取出待抓取URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。 4.分析已抓取URL队列中的URL,并且将URL放入待抓取URL队列,从而进入下一个循环。 对URL的认识 爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它进行进一步的处理。因此,准确地理解URL对理解网络爬虫至关重要。 URL:统一资源定位符,是Internet 上描述信息资源的字符串。URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL 的格式由三部分组成:第一部分是协议(或称为服务方式)。 第二部分是存有该资源的主机IP地址(有时也包括端口号)。 第三部分是主机资源的具体地址,如目录和文件名等。 第一部分和第二部分用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。 1.HTTP 协议的URL 示例

使用超级文本传输协议HTTP,提供超级文本信息服务的资源。 例:https://www.360docs.net/doc/4f16638675.html,/channel/welcome.htm。其计算机域名为https://www.360docs.net/doc/4f16638675.html,。超级文本文件(文件类型为.html)是在目录/channel 下的welcome.htm。这是中国人民日报的一台计算机。 例:https://www.360docs.net/doc/4f16638675.html,/talk/talk1.htm。其计算机域名为https://www.360docs.net/doc/4f16638675.html,。超级文本文件(文件类型为.html)是在目录/talk 下的talk1.htm。 2.文件的URL 用URL表示文件时,服务器方式用file表示,后面要有主机IP 地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。 例:file://https://www.360docs.net/doc/4f16638675.html,/pub/files/foobar.txt。代表存放在主机https://www.360docs.net/doc/4f16638675.html, 上的pub/files/目录下的一个文件,文件名是foobar.txt。 例:file://https://www.360docs.net/doc/4f16638675.html,/pub。代表主机https://www.360docs.net/doc/4f16638675.html, 上的目录/pub。 例:file://https://www.360docs.net/doc/4f16638675.html,/。代表主机https://www.360docs.net/doc/4f16638675.html, 的根目录。 通过URL抓取网页 1.抓取单个网页 所谓网页抓取,就是把URL 地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE 浏览器的功能,把URL 作为HTTP 请求的内容发送到服务器端,然后读取服务器端的响应资源。 Java网页抓取 Java 语言把网络资源看成是一种文件,它对网络资源的访问和对本地文件的访问一样方便。它把请求和响应封装为流。因此我们可以根据相应内容,获得响应流,之后从流中按字节读取数据。例如,https://www.360docs.net/doc/4f16638675.html,.URL 类可以对相应的Web服务器发出请求并且获得响应文档。https://www.360docs.net/doc/4f16638675.html,.URL 类有一个默认的构造函数,使用URL 地址作为参数,构造URL 对象:URL pageURL = new URL(path);接着,可以通过获得的URL对象来取得网络流,进而像操作本地文件一样来操作网络资源:InputStream stream = pageURL.openStream()。 HttpClient Get方法 在实际的项目中,网络环境比较复杂。因此,只用https://www.360docs.net/doc/4f16638675.html, 包中的API来模拟IE客户端的工作,会产生很大的代码量。需要处理HTTP返回的状态码,设置HTTP代理,处理HTTPS 协议等工作。为了便于应用程序的开发,实际开发时常常使用Apache 的HTTP客户端开源项目——HttpClient。它完全能够处理HTTP 连接中的各种问题,使用起来非常方便。只需在项目中引入HttpClient.jar 包,就可以模拟IE 来获取网页内容。例如: //创建一个客户端,类似于打开一个浏览器 HttpClient httpclient=new HttpClient(); //创建一个get 方法,类似于在浏览器地址栏中输入一个地址

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

网络爬虫的设计与实现

摘要 网络爬虫将下载的网页和收集到的网页信息存储在本地数据库中以供搜索引擎使用,它是一个专门从万维网上下载网页并分析网页的程序。随着网络的快速发展,人们对搜索引擎的要求也越来越高,而网络爬虫的效率直接影响着搜索引擎的质量。 本课题研究的是通用网络爬虫,它是从一个或若干个初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页中抽取新链接放入到链接队列中,直到爬虫系统满足了停止条件。该课题主要涉及到了缓冲池技术,多线程技术,套接字技术,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)

爬虫技术是什么

https://www.360docs.net/doc/4f16638675.html, 爬虫技术是什么 爬虫就似乎对于做数据分析、人工智能、SEOSEM的人来说非常熟悉,是日常工作中都需要用到或者得非常熟悉的一种数据采集的技术。 爬虫技术是什么 互联网上有着无数的网页,包含着海量的信息。但很多时候,无论出于数据分析或产品需求,我们需要从某些网站,提取出我们感兴趣、有价值的内容,但是我们不可能去每一个网页去点去看,然后再复制粘贴。所以我们需要一种能自动获取网页内容并可以按照指定规则提取相应内容的程序,这就是爬虫技术。 爬虫技术能用来做哪些好玩的事情 利用爬虫技术挖掘社交网站,比如有知乎大牛挖掘Twitter数据,然后分析一般大家几点睡觉,通过统计一下sleep这个词在twitter上出现的频率。又比如如何判断一个用户的职业,验证六度分隔理论, 以及网络扩张速度的建模。

https://www.360docs.net/doc/4f16638675.html, 利用爬虫技术建立机器翻译的语料库。具体思路可以参考知乎大V刘飞的文章:网上双语的资源还是挺多的,利用爬虫技术在爬取网页时对当前网页进行简易判断,如果有双语嫌疑,则收录整理出来双语的正文;如果没有,弃用; 将正文内容进行详细判断,确定是双语文本,则进行段落对齐和句子对齐,整理到语料库;如果没有,弃用;对当前网页的所有链接网页,重复步骤。抓取大量的这种数据之后,就可以建立一个庞大的语料库了。 3、利用爬虫技术预测票房。利用爬虫技术抓取新浪博客某部电影相关的数据,然后利用微博上大家表现出来的,对某部电影的期待值和关注度,来预测其票房。 4、利用爬虫技术抓取数据训练AI,比如知乎用户grapeot爬了知乎12万用户的头像,把长得像的头像放在一起,方便浏览,然后搜集了用户的点击,预测出来这是你们(平均)最喜欢的人长的样子:然后根据点击数据训练出来了一个机器人,可以自动识别美女。

网络爬虫详解

网络爬虫详解 一、爬虫技术研究综述 引言 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如: (1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 (2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 (3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 (4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。 为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 1 聚焦爬虫工作原理及关键技术概述 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件,如图1(a)流程图所示。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,如图1(b)所示。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题: (1) 对抓取目标的描述或定义; (2) 对网页或数据的分析与过滤; (3) 对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)爬虫在数据分析有哪些作用?

分布式爬虫实验设计文档

分布式网络爬虫实验 五组赵成龙、黄莹 一、需求分析 (2) 二、实验架构及原理 (2) 三、模块设计及代码实现 (3) 爬取网页模块设计 (3) < DNS解析 (4) Socket连接 (4) 发送HTTP请求头并获得相应 (6) 网页解析模块设计 (7) 正则表达式的设计 (8) 测试用例的设计 (8) 利用Regex库提取网页URL (8) 利用Pcre库提取网页URL (10) 》 四、心得体会 (12)

一、需求分析 随着国际互联网的迅速发展,网上的信息越来越多,全球网页数量超过20亿,每天新增加730万网页。要在如此浩瀚的信息海洋里寻找信息,就像“大海捞针”一样困难。在实际生活中我们经常会使用像百度、Google这些搜索引擎检索各种信息,搜索引擎正是为了解决这个问题而出现的技术,而网络爬虫正是搜索引擎所需要的关键部分既然百度、Google这些搜索引擎巨头已经帮我们抓取了互联网的大部分信息,为什么还要自己写爬虫呢因为深入整合信息的需求是广泛存在的,在企业中,爬虫抓取下来的信息可以作为数据仓库多维展现的数据源,也可以作为数据挖掘的来源,甚至有人为了炒股,专门抓取股票信息。这些实际问题的解决所需要的根本技术就是分布网络爬虫。 本次实验主要的内容就是利用IO复用抓取网页,并多线程的分析每个抓取到的网页所包含的URL信息,通过消息队列将抓取网页的部分和分析网页部分进行通信,最终记录下160000网页中所包含的所有URL,实现分布式网络爬虫。 》 二、实验架构及原理 本实验分为两个模块:爬取网页模块、网页分析模块。实验架构如图所示

图分布是网络爬虫框架 爬取网页模块采用socket通信方式实现客户端与服务器的通信:首先将客户端与服务器进行三次握手后建立连接,客户端发送HTTP请求头,服务器端收到客户端请求后,进行HTTP响应,发送相应的网页信息,客户端收到服务器的响应后将所获得网页文件交给网页分析模块进行处理并提取URL。流程图如图所示: 图爬取网页模块流程图 网页分析模块主要工作如下图流程图所示。而本模块的网页分析处理主要在于对抓取到的HTML文件的内容进行URL的提取,我们主要运用正则表达式进行字符串的匹配操作。通过采用Regex正则表达式库和Pcre正则表达式库进行了两种尝试,并根据网页的情况设计了测试用例,进行程序的检验。 !

定向网络爬虫-开题报告

山东科技大学 本科毕业设计(论文)开题报告 题目网络爬虫 定向爬取?脚本之家?文本信息 学院名称信息科学与工程学院 专业班级计算机科学与技术2012级2班 学生姓名包志英 学号 2 指导教师赵中英 填表时间:二0一六年三月二十八日

下,并不能很稳定的工作,内存消耗随着程序的运行而不断增大,直到达到jvm 分配的上限而崩溃。很多时候,你只能做个权衡,每个webclient使用若干次后就把它回收,然后重新启动一个,这非常影响性能。Rhino对于javascript的支持并不好,实际使用中,会发现各种Exception,很多时候会导致无法渲染出想要的结果,这个htmlunit的又一大缺陷。随着版本的更新,能够渐次解决一些问题,但是好的程序员,还是应该自己读源码来尝试解决问题。 Phantomjs相比于htmlunit,对于js的支持更接近真实的浏览器,但是并发性能差,通过java的exec调用系统命令来启动,更加降低了性能。 此外主流的浏览器都提供了相应的抓取支持,selenium可谓是一个集大成者,包含了上述的所有组件,以WebDriver的形式,适配各种爬虫组件,你可以用它操控浏览器自动抓取,当然,并发和性能的问题依然存在。 爬虫开发的主要问题是性能和反封锁。很多时候,采用高并发高频率抓取数据是可行的,前提是目标站点没有采用任何反爬措施(访问频率限制、防火墙、验证码……);更多时候,有价值的信息,一定伴随着严格的反爬措施,一旦ip 被封,什么组件都没戏了。你不得不维护一个代理IP池来解决这个问题,当然,这也带来了代理ip稳定性和速度的问题,这些问题都是无法回避的问题,我们需要针对具体的情况,采用对应的措施,以最大限度的完成爬虫爬取任务。 目前,爬虫的需求呈爆炸式增长的趋势,这是当前各种互联网创新和大数据时代的新常态。火车和八爪鱼等团队看到了这一点,并率先开发了相对完备的爬虫产品,很多用户都在使用,但是更多的用户希望直接把爬虫抓取任务外包出去,因为他们不懂技术,工具的使用需要逾越技术的鸿沟,大部分用户并没有这个逾越鸿沟的打算。我相信像猪八戒这样的技术外包平台会活的越来越好,我也相信各个技术门类会不断聚集,形成相对独立的社区,P2P的社区平台将提供爬虫开发者和爬虫需求者更加通畅的交流渠道。 目前,淘宝等平台上出现很多爬虫服务商,如,这种定制开发的服务,增加了服务商的成本,服务往往是一次性的,满足了一个用户的需求,然而具有相似需求的用户,却很难有机会找到这个服务商,这就是为什么我们需要爬虫信息交流的平台。 我有意建立这样的平台,不管是微博、微信公众号、文章,还是政府门户的

网络爬虫的设计

网络爬虫的设计与实现 王 娟,吴金鹏 (贵州民族学院计算机与信息工程学院,贵州贵阳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 爬虫结构

山东建筑大学计算机网络课程设计基于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 网络爬虫程序总体设计

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

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

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

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

一、原始依据(包括设计或论文的工作基础、研究条件、应用环境、工作目的等。) 互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景。搜索引擎作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性。不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。所以需要一个能基于主题搜索的满足特定需求的网络爬虫。 为了解决上述问题,参照成功的网络爬虫模式,对网络爬虫进行研究,从而能够为网络爬虫实现更深入的主题相关性,提供满足特定搜索需求的网络爬虫。 二、参考文献 [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月.

网络爬虫技术的概述与研究

网络爬虫技术的概述与研究 摘要 网络爬虫,又被称为网页蜘蛛,网络机器人,随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎 (Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google 等,作为一个辅助人们检索信息的工具成为用户访问web的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性。为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。本文将对网络爬虫技术及其原理进行简单的介绍,并且给出实例。 关键词 网络爬虫聚焦爬虫网页抓取搜索策略 URL

一、网络爬虫的简介 1、URL 在介绍网络爬虫之前,先引入URL的相关知识。URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位符”。通俗地说,URL 是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL的格式由三部分组成: ·第一部分是协议(或称为服务方式)。 ·第二部分是存有该资源的主机IP地址(有时也包括端口号)。 ·第三部分是主机资源的具体地址,如目录和文件名等。 第一部分和第二部分用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。 用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。例如file://https://www.360docs.net/doc/4f16638675.html,/pub/files/foobar.txt 爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它进行进一步的处理。 2、传统爬虫与聚焦爬虫 网络爬虫是一个自动提取网页的程序,它为搜索引擎从web上下载网页,是搜索引擎的重要组成。 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。搜索引擎是基于传统爬虫技术建立的,但其存在着一定的局限性,例如:(1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 (2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 (3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 (4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。 为了解决以上问题,定向抓取网页的聚焦爬虫应运而生。 聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取URL的队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页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.

网络爬虫技术论文

网络爬虫技术浅析 在当今社会,越来越多的人使用互联网看视频,听音乐,查资料等等,使得网络上的数据越来越多。人们想从海量的数据中获取到自己想要的知识,靠人力浏览很难实现查找到需要的东西,除非运气相当好。这个时候搜索引擎就出现了,搜索引擎可以通过关键字,查找网页并显示在用户面前,用户可以得到有用的信息。在搜索引擎中非常关键的数据来源来自一种很神奇的技术:网络爬虫技术,它构成了搜索引擎的基础部分。 网络爬虫的基本概念 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。 一、网络爬虫的历史 1994年的1月份,第一个既可搜索又可浏览的分类目录EINetGalaxy上线了。它之后才出现了雅虎,直至我们现在熟知的Google、百度。但是他们都不是第一个吃搜索引擎这个螃蟹的人。从搜索FTP上的文件开始,搜索引擎的原型就出现了,那时还未有万维网,当时人们先用手工后用蜘蛛程序搜索网页,但随着互联网的不断壮大,怎样能够搜集到的网页数量更多、时间更短成为了当时的难点和重点,成为人们研究的重点。 1994年7月20日发布的Lycos网站第一个将“蜘蛛”程序接入到其索引程序中。引入“蜘蛛”后给其带来的最大优势就在于其远胜于其它搜索引擎的数据量。自此之后几乎所有占据主导地位的搜索引擎中,都靠“蜘蛛”来搜集网页信息。 通用网络爬虫和聚焦网络爬虫的工作原理 网络爬虫是搜索引擎的重要组成部分,它是一个自动提取网页的程序,为搜索引擎从网上下载网页. 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。与传统爬虫相比,聚焦爬虫的工作流程则较为复杂,需要根据一定

基于python的网络爬虫设计

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

相关文档
最新文档