子正文,属于第2 层;H、I 和K 是发帖人或回帖人,属于第3 层;本文中只需要抓取到第 2 层的信息,所以可以将网络蜘蛛的抓取层次设置为3,避免多余信息的抓取;在进入论坛 135 主页后,页面包括子版块的入口URLs、广告链接及一些其他没有用处的链接,在第0 层只 需要爬取子版块的入口地址,在此需要设置了一个过滤掉多余URL 链接的策略;在进入第 1 层,即进入子版块后,需要抓取的是各个帖子的URLs 链接,并抓取帖子的详细信息;进 入第3 层,即帖子正文及回帖部分,到此不再需要抓取本网页Web 文件中的链接,只需要 抽取相关的文本信息[3]。 140 面向BBS 的主题爬虫在抓取网页的时候,首先需要对帖子的相关性进行判断,即先抓 取帖子的标题进行分词,和预先设定好的关键词进行匹配,如果相关则将URL 放入待抓取 队列[4]。 2.3 正则表达式在爬虫的应用 正则表达式最早是由数学家Stephen Kleene 于1956 年提出,他是在对自然语言的递增 145 研究成果的基础上提出来的。正则表达式(regular expression)描述了一种字符串匹配的模 式,可以用来检测一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合 某个条件的子串等[6]。正则表达式是由普通字符(例如字符a 到z)以及特殊字符(称为元 字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行 匹配。例如要在email 格式的字符(如z_xy@126.com)中分解出用户名和服务器名,可以 150 定义如下的正则表达式:(?<user>[^@]+)@(?<host>.+),然后使用相应的正则表达式解析 器进行解析,得到两个分组user 组合host 组,user 组里存储用户名z_xy,host 组里存放服 务器名126.com,而用传统的方法是很难实现这种分解的。在本文中用正则表达式来匹配符 合子版块及帖子格式的超链接。 本文的研究目的是主题爬虫在BBS 中的应用,本节通过分析BBS 的结构及URL 的结 155 构特征,及需要的专业技能,为后面章节的设计工作奠定了基础。 3 面向BBS 主题爬虫的设计 网络爬虫(Crawler)是利用链接(link)自动穿越Web 和下载Web 文档等网络资源的 程序,其机制一般是图形路径遍历;主题爬虫一般是针对特定的网页进行抓取。所以以何种 策略访问Web,成为近几年来专业搜索引擎网络爬虫研究的主要问题之一[3]。现有的搜索策 160 略主要分两类:基于内容相似度评价的搜索策略和基于Web 结构评价的搜索策略。通过分 析BBS 的结构特征,每个BBS 都有一个固定的入口地在,BBS 网页结构层次清晰,对网络 爬虫进去指定的帖子列表,并抓取相关的信息提供了一定的帮助,下面详细介绍面向BBS 的主题爬虫信息抓取的设计。 3.1 面向BBS 的主题爬虫的总体框架 165 面向BBS 的主题爬虫是抓取论坛中帖子正文的信息,首先需要进入二级页面的帖子列 表,然后进行相关性分析,如果与主题相关则将这个URL 存入到待抓取队列,方便后面的 正文抓取。通过前面的分析得知,BBS 都有一个子版块列表,提取各子版块的入口地址成 为需要解决的一个问题,帖子相关性的分析也是本系统关注的主要问题之一。 面向BBS 的主题爬虫系统的总体框架如图3 所示,主要由页面采集模块、链接过滤模 170 块、主题匹配模块和信息抓取模块四部分组成。下面分别介绍各个模块的功能。 图3 面向BBS 的主题爬虫系统的总体框架 页面采集模块:该模块是任何一个网络爬虫都必不可少的基本模块。本模块的主要任务 175 是通过HTTP 协议请求并下载Web 页面。 链接过滤模块:本模块主要用于过滤广告链接及一些不需要的超链接。从BBS 的入口 列表中获得URL 后通过页面采集模块抓取其Web 文档,通过在XML 文档中设置的正则表 达式匹配规则,过滤链接。 主题匹配模块:本模块主要用于判断Web 文档中的链接是否和需要抓取的主题相关。 180 本系统是基于内容相似度评价的搜索策略,通过将BBS 的帖子标题分词,与搜索主题相匹 配并分析其相关度,得到需要抓取的URL,并存入待抓取队列。 信息抓取模块:将待抓取队列中的URL 取出,通过页面采集模块下载其Web 文档,抓 取正文部分内容并存储到数据库。 BBS 入口列表:用于存放各大论坛的入口地址。 185 XML 文档:XML 文档又称种子文件,根据前面分析知,每个论坛的URL 结构不同, 这就需要对不同的论坛设置不同的链接匹配规则,即每个论坛都需要有自己的种子文件,这 些种子文件通过XML 文档进行管理。在本系统用了XML 文件经行存储,存储内容主要包 括不同论坛的匹配规则、编码方式及抓取的频率。 3.2 各模块的详细设计 190 每个BBS 都有一个固定的入口地址,这些入口地址可以作为网络爬虫抓取的入口。因 为真正需要抓取的帖子信息在BBS 的三级页面,前面需要经过一级页面和二级页面的过滤。 根据第2 节的介绍,BBS 拥有比较统一的结构特征,这就为主题爬虫的抓取策略的制定提 供了方便。下面详细介绍每级页面的不同处理方案,同时根据前面介绍的BBS 规则的网页 结构特征,设计BBS 主题爬虫必须考虑两个重要准则[4]: 195 1) 充分利用BBS 的目录式结构,获取子版块的入口地址,提高主题爬虫的定向挖掘 能力、网络挖掘的效率及获取信息的准确率; 2) 降低主题爬虫对特定BBS 数据结构的依赖性和耦合度,提高主题爬虫的兼容能力, 使其能够兼容大部分论坛的爬取。 所以BBS 网络爬虫的抓取是基于广度优先的主题爬虫,当进入一个BBS 入口后,主题 200 爬虫通过入口地址抓取各个板块的入口URL,将要抓取的板块URL 放入未爬取的URL 队 列。初始的网络爬虫需要有一个抓取URL 链接的队列,队列的链接即为不同论坛的入口地 址,这就需要一个种子列表来存储不同论坛的抓取信息,在本文用了XML 文件管理种子文 BBS 入口列表 页面采 集模块 数据库 链接过 滤模块 主题匹 配模块 Web 信息抓 取模块 XML 文档(包 含种子文件) URL待抓取列表 件;当爬虫下载Web 页面后,需要一个搜索策略提取出子版块的入口地址,在此使用匹配 子版块URL 的正则表达式,此正则表达式存储在各自论坛的XML 种子文件中,作为主题 205 爬虫的URL 过滤策略。 1. 链接过滤模块的设计 在进入论坛首页后,可以看到清晰的子版块列表,新浪论坛的列表如图4 所示。 图4 新浪论坛子版块列表 210 在进入主页后,首先通过页面采集模块下载Web 文件,在Web 文档中通过Parser 将 Web 文件中的超链接提取出,但是其中存在很多广告连接和与版块无关的连接,在此需要 对提取出的连接进行过滤,在3.1 中分析了BBS 的URL 组成格式,在此可以通过正则表达 式来匹配符合子版块URL 格式的链接, 例如新浪论坛的子版块URL : 215 http://forum.book.sina.com.cn/forum-51-1.html,可以通过下面的正则进行匹配,从而得到需 要的链接,正则<a\s*href=”(http://forum.book.sina.com.cn/forum\-\d*\-1.html)”>(.*?)</a>,在 匹配出的URLs 链接中还存在重复的问题,重复抓取相同的版块会影响效率,在此使用Bloom Filter 算法进行去重处理,并将符合的URLs 存储到待抓取列表。具体流程见图5 所示。 220 图5 连接过滤模块设计流程图 2. 主题匹配模块的设计 在抓取网页时,主题爬虫一般会有两种策略:广度优先和深度优先;广度优先是指网络 蜘蛛会先抓取网页中链接的所有网页URLs,然后再选择需要抓取的链接网页进行抓取,继 225 续抓取在此网页中链接的所有网页,重复执行此类操作。在BBS 中,格式层次清晰,需要 抓取的信息比较明确。在进入BBS 帖子列表后采用广度优先开始匹配每个帖子的的入口地 址(即URL 连接)。 论坛入口 下载Web 文档 存入队列 将符合条件的链接去重处理 判断是否符合存入待爬取队列 匹配规则 否 是 获取Web 文档中 的链接 是 否 超链接中的锚文本,也称连接文本,是对页面中的超链接进行说明的文本,在HTML 页面中充当指针文本的角色,其对该URL 所指向的页面起到了概括描述的作用。用户浏览 230 网页也往往根据网页中超链接的说明文本来判断待访问链接是否是自己关心或热点的话题。 因此链接文本成为对URL 主题相关性进行预测的一个主要指标。同时URL 地址中也存在一 些提示页面相关主题的信息,即在页面的URL 中使用与该页面主题相关的字符串,例如: http://club.life.sina.com.cn/forum-45-1.html 中含有“life”,可是此链接是和生活相关的主题; 而http://club.mil.news.sina.com.cn/forum-6-1.html 中含有“news”,此链接是和新闻相关的话 235 题。 面向BBS 的主题爬虫是基于内容相似度分析的搜索算法,在此通过URL 中含有主题的 信息和超链接文本中和主题相关词出现的频率进行相似度分析[5]。基于以上两个因素得到如 下判断超链接相关性的公式。 Q *url(i) (1 )* sim(a ,T ) i i =α + −α 公式(4-1) { 其他 中含有和主题相关的词 0 url(i)= 1 url 240 公式(4-2) Σ = Σ = Σ = = n j n j wij wtj n j wij wtj ai T 1 1 2 . 2 1 . sim( , ) 公式(4-3) 其中Qi 是超链接i 的URL 内容相关度, url(i) 是链接i 的URL 字符串的相关性,由 公式(4-2)可得。sim(ai ,T ) 是链接文本与主题的相关度,需对链接文本和相关主题词建 立空间向量模型[5]。具体流程图见图6 所示。 245 图6 主题匹配模块设计的流程图 3. 种子文件结构的设计 本文实现的主题爬虫是需要人工干预的,每个需要抓取的论坛都需要配置一个相应的爬 250 取种子,这些不同论坛的种子用一个XML 文件进行管理,XML 文件包括论坛的入口地址、 爬虫抓取网页URL 的选取规则(即正则表达式)、编码方式、论坛名称等信息[6]。XML 格 式如下所示: 待抓取列表入口 提取标题URL 及链接文本 抓取正文信息 判读是否和主题匹配 学术论文网Tag:代写硕士论文 代写MBA论文 代写EMBA论文 代写毕业论文 论文发表 |