主题式新闻搜索系统的设计—新闻页面采集_模块毕业论文设计(编辑修改稿)内容摘要:
主题 从表面看主题就是一种风格,也是一种靓丽的效果,更加是 一种视觉延伸和视觉效应。 从实质上讲,主题式新闻搜索的主要目的就是让用户随心所得去获取各式各样的新闻,是用户可以根据自己的喜好任意的阅读或者存储自己喜爱的新闻。 当然这是整个系统的大系统的灵魂,但是对于新闻采集模块来说,并不是真正的重点,在这里我们只是略微的提起。 相对路径与绝对路径 绝对 URL 用于表示 Inter 中特定文件所需要的全部内容,相对 URL 只适合同名网页链接下的其他目录。 所以说,当存储的时候,一定要使用绝对路径,应为只有绝对路径,才可以真正的获得网页,而相对路径则不能。 因为从 本质上看,它不能算是真正的连接,不能代表这个刚链接所关联的网页。 比如当进入一个网站的之后,可能在其内部当你去点击其他的画面的时候,在观察地址栏的链接之中你可能发现链接变得很长,这就是因为所点击的内容的地址使用了相对链接。 也就是说,这个链接是不用的。 所以说,相对 URL 只能适合同名网页之下的去连接其它目录,如果当你进入其他网站时则不可用。 所以抓取的一定要是绝对路径链接,因为只有这样,抓取的链接才有意义。 中原工学院计算机学院毕业(设计)论文 9 URL 的抓取 在成千上万的网络之上,怎样才能将那些链接抓取到本地,实现的策略有三种。 分别是广 度优先搜索,深度优先策略,最佳优先搜索。 广度优先搜索策略是通过在抓取 URL 的整个过程之中,当仅当通过抓取完这一层次,才会进行抓取下一层次的搜索。 此算法的实现和设计比较简单。 当你想为目前覆盖尽可能多的网页时候,一般采取广度优先搜索方法。 他的基本思想是通过认为与最初初始话的 URL,在一定链接距离内的网页很可能与主题的关系或者相关性的概率十分的大。 另外一种方法是将广度优先搜索与网页过滤技术结合使用。 先用广度优先策略去抓取网页,然后再将他其中与其无关的网页去过滤掉。 但是这个方法的缺点,主要在于随着抓取网页 的数量增加,大量的无关网页将会被下载并且过滤,算法的效率十分的低下。 深度优先搜索策略的方法是,从起始网页开始,去选择一个 URL 作为切入口。 去分析这个网页中的 URL,然后在去选择一个再进入。 如此一个链接有一个链接地去抓取下去,直到处理完一整条的路线之后,然后再去处理下一条路线。 深度优先策略设计的方法较为简单。 然而由于门户网站提供的链接往往最具有价值的, PageRank 也十分的高。 但是当每深入一层之后,网页的价值和 PageRank都会相应地下降。 这就暗示了重要网页通常距离种子较近,而过度深入抓取到的网页却价值 十分的低。 同时,这种策略随着抓取深度的深入,就会直接影响着抓取的命中率和抓取的效率,所以说抓取深度是决定该种策略的关键。 所以说对于其他两种策略而言。 此种策略很少使用。 最佳优先搜索策略是按照一定的网页分析算法,然后去预测候选 URL 与目标网页的相似成度,或者说与主题的相关性。 然后在去选取评价的效率最高的一个或者说几个 URL 进行抓取。 它只去访问经过网页分析算法去预测为“有用”的网页。 但是他还是存在的一个问题,在网页抓取路径上的可能有很多相关网页被忽略背完被忽略。 可以说所谓的最佳优先策略其实是一种局部的最 优搜索算法。 因此需要将最佳优先结合具体的应用然后改进,以跳出局部的最优点。 本系统使用的是广度优先搜索策略,因为使用它可以大量的采集 URL。 杜昕佳 : 主题式新闻搜索系统的设计 10 URL 的除重 通常拥有着三种方法,分别是 基于磁盘的顺序存储 除重算法, 基于 Hash 算法的存储 除重算法, 基于 MD5 压缩映射的存储 除重算法。 第一种方法 基于磁盘的顺序存储 除重算法 基于磁盘的顺序存储 方法实现如下:它的真正含义就如它的字面意思一样 ,通常把下载的 URL 按抓取的顺序一一存储在本地磁盘之中。 淡然,如果你早已经建立好了文本文 件,那么最好将它存储在文件之上,那样便于插入便于取出。 它的工作流程如下,但 每 一 次有一个爬虫线程 准备开始 一个任务 之时,也就是说在一个 URL 开始下载之前, 系统会 通过到磁盘上 中存储的 文件 之 中 去 检索,如果 系统 没有 发现它出现过,那么它就将该 URL 插入到该记事本的第一行但然也可以是最后一行,否则就选择放弃。 这种操作确实十分的简短,并且易于操作。 但是实际上这个方法,确实不能利用。 因为众人皆知互联网异常的庞大, URL 的数量何止千万甚至上百亿,很显然使用这种方法是十分的困难,也是不可取的。 第二种方法 基于 Hash 算法的存储 除重算法: 它是通过 hash 算法来实现 ,它的实现算法如下,它会给每一个指定的或者说确定 的 URL 一个地址或者说名片。 Hash 函数会给 每一个 URL 一张名片(地址),它仅且仅代表着他自己。 当他获得了这样名片的时候,就代表着这个 URL已经被抓去。 通过 映射到某个物理地址上 , 当 它 需要进行检测 URL 是否重复的时候,只需要将这个 URL 进行 Hash 映射,如果得到的地址已经存在,说明已经被下载过,放弃下载,否则,将该 URL 及其 Hash 地址作为键值 写入 hash 中。 本系统就是使用这种饭方法。 第三种 基于 MD5 压缩映射的 除重 存储 : MD5 算法是一种加密 的 算法, 或者说是基于 hash 的加密算法,它也可以认为是 Hash 算法的存储 的延伸,中文名字叫做中文名为消息摘要算法。 当然他也不是单单利用 hash 的方法。 它先将 获取的 URL 中的 字符串 行的 压缩, 使它得到了一个被 压缩 的 字符串, 当然在此同时它还 可以 通过 直接 映射,得到 一个 Hash地址。 除此以外 , MD5 算法 还 能够将任何字符串压缩 或者改编 为 128 位整数,并 同时 映射为物理地址。 由于这个原因,所以说使用 MD5 进行 Hash 映射 出现中原工学院计算机学院毕业(设计)论文 11 碰撞的几率非常小, 所以十分的有效。 它的五个性 质分别是压缩性:也就说它可以使任意长度的数据,经过某种计算,得到的 MD5 值长度都是固定不变的。 容易计算:也就是说它从原数据之中计算出 MD5 值是很容易。 抗修改性:也就是说,只要你对原数据进行改动,哪怕说只是单单的修改 1 个字节,那么你所得到的 MD5 的值将会有很大区别,甚至完全不同。 弱抗碰撞:也就是说对已经知原数据和其 MD5 值,去寻找到一个和这个原知的数据,拥有相同的 MD5 值的数据(这就是所谓的伪造数据),是非常困难的甚至可以说是不可能的。 强抗碰撞:想同时找到两个互不相同的数据,让它们拥有相同的 MD5 值,可以说是 非常困难的,甚至说不可能。 当然这种方法确实准确有效,但是操作却异常的复杂。 所以 本系统采取的方式是 基于 Hash 算法的存储 除重算法,具体的方法实现,会在下文中一一列举。 补充: 这个看似简单的工作,工作量却异常的复杂,异常的大。 以下 就以 新浪新闻 的 页面为例 子进行讲解。 新浪 的 一个新闻页面大小 在 50~ 60k 之间 ,每个页面 大约拥有者 90~ 100 个 URL,如果 假如让你 每秒下载 10 个页面, 那么就会产生 900~ 1000 次的 URL 排重 的 操作, 而且 每次排重操作都要在几百万 甚至 几千万的 URL 库中去查询 ,去对比。 这种操作对数据库系统是 一个灾难, 对于系统来说也是一个灾难。 所以说从 理论上 来说, 任何需要产生磁盘 I/O 动作的存储系统都 不可能 满足这种查询的需求。 数据的写入 通过获得绝对路径的 URL,获得了相关的网页。 通过网页,获取它的源码。 接下来的就是至关重要的一步,它决定了系统的好坏与与用户的体验。 它的成败,关系到了前面所有的努力,也就说它如果失败了,那么所有的努力就会付之东流。 它的主要工作,通过标题的截取判定,发现含有资讯或者新闻的字眼,然后从获取的网页之中获取源码,然后除去脚本,将里面的与新闻相关的各式各样的数据,写入到指定的文本 文件之中。 将所有与新闻的图片,下载到本地文件夹之中。 杜昕佳 : 主题式新闻搜索系统的设计 12 第三章新闻采集模块的设计与实现 本章系统的核心思想是,利用网络爬虫与搜索引擎技术,通过 URL 的抓取除重判断与绝对路径的获取而进行展开的。 然后通过对标题的截取与判断,最终决定是不是下载其图片与将数据写入文本文档之中。 具体的流程如下 中原工学院计算机学院毕业(设计)论文 13 开 始抓 取 U R L是 否 重 复获 取 链 接 的绝 对 路 径获 取 源 码截 取 标 题 , 并 判 断 是 否 是 新 闻删 除 脚 本 , 截 取 数 据写 入 t x t 中结 束放 弃NYNY 程序运行流程图 11 杜昕佳 : 主题式新闻搜索系统的设计 14 URL 的抓取与除重 如何才能将网络之上的 URL 抓取到本地,是这个程序或者系统的重中之重,因为它是程序的开端,也是这个系统的画龙之笔。 只有将它抓取到本地之中,这个系统或者说程序才有继续运行下去的必要。 如果抓取失败了,这个程序即使还能进下去,也没有丝毫的意义。 虽然他的地位十分重要,但是它的实现却异常的简单。 链接的抓取不需要太多的算法,也不需要过多的策略。 只需要一个简单的策略就能够实现。 本系统利用广度优先算法将网络的超链接抓向本地的一个早已经,初始化的队列之中。 就这样,短短的数 段代码就能实现。 当然这只是开始,后面的任务还是依然的严峻。 做完这一切还是远远的不够的,因为互联网之上的链接何止拥有千万,最重要的是系统抓取的链接都是随机,所每一个链接都有可能与它下一个或者说上一个重复,怎么才能将那些重复的链接删去,又是摆在视线之中的问题。 当然它的过程比较复杂,比 URL 的抓取工作要复杂得多。 对于它的实现,我们利用开发工具之中的一个算法或者说是一个系统类。 它是基于Hash 算法的存储 算法, 当然也 可以根据他的真正的操作,认为它是一种映射。 工作流程是它会分给每一个链接一个地址,后面的链接与前面的对比 如果地址已经出现,则遗弃,否则将链接的地址与链接本身写入 hash 函数之中。 广度优先遍历的解释,它是指在网络之上抓取网页链接的过程中,当仅当它完成了,它当前层次的搜索之后,它才会进行下一层次搜索。 此算法的设计和实现都是十分简单,易于操作并且效率也不是太低,特别适合随意的抓取网络链接。 比如在抓取的过程中,系统为了覆盖尽可能多的网页,一般都会去使用广度优先搜索方法。 当然也有许许多多的科研研究,比如将广度优先搜索策略去应用到聚焦爬虫之中。 它的基本思想是,系统认为与它初始的 URL 在一定范围内的链接距离与它的相近的网页 ,很可能就会与相关的主题的相似性的概率十分大。 URL 除重的方法,它利用 hash 的算法,分给每一个抓取的 URL 一个标签也可以说是地址,如果这个标签或者地址在 hash 之中从来都没有出现过,系统就认为此链接尚未抓取,此链接炮六,如果出现则选择放弃,就这样网页的就将抓取的重复性链接剔除。 核心代码: public static string buildurl(string url, string param) 中原工学院计算机学院毕业(设计)论文 15 { string url1 = url。 if ((param) 0) { if ((amp。 , (param) + ) 0) { url1 = (0, (param) 1) + ((amp。 , (param) + ) + 1)。 } else { url1 = (0, (param) 1)。 } return url1。 } else { return url1。 } } endregion region 获取页面 url public static string GetScriptNameQueryString { get { return [QUERY_STRING].ToString()。 } } 杜昕佳 : 主题式新闻搜索系统的设计 16 public static string GetScriptName { get { return [SCRIPT_NAME].ToString()。 } } public static string GetScriptUrl { get { return GetScriptNameQueryString == ? GetScriptName : ({0}?{1}, GetScriptName, GetScript。主题式新闻搜索系统的设计—新闻页面采集_模块毕业论文设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。