




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山东财经大学 本科毕业论文本科毕业论文 设计设计 题目 题目 基于基于 javajava 的搜索引擎设计与实现的搜索引擎设计与实现 学学 院院 计算机科学与技术 专专 业业 计算机科学与技术专业 班班 级级 计算机科学与技术 2 班 学学 号号 20080854239 姓姓 名名 秦 露 指导教师指导教师 林培光 山东财经大学教务处制 二 一二年五月 山东财经大学学士学位论文 山东财经大学学士学位论文原创性声明山东财经大学学士学位论文原创性声明 本人郑重声明 所呈交的学位论文 是本人在导师的指导下进 行研究工作所取得的成果 除文中已经注明引用的内容外 本论文 不含任何其他个人或集体已经发表或撰写过的研究成果 对本文的 研究做出重要贡献的个人和集体 均已在论文中作了明确的说明并 表示了谢意 本声明的法律结果由本人承担 学位论文作者签名 年 月 日 山东财经大学关于论文使用授权的说明山东财经大学关于论文使用授权的说明 本人完全了解山东经济学院有关保留 使用学士学位论文 的规定 即 学校有权保留 送交论文的复印件 允许论文被查 阅 学校可以公布论文的全部或部分内容 可以采用影印或其他 复制手段保存论文 指导教师签名 论文作者签名 年 月 日 年 月 日 山东财经大学学士学位论文 基于 java 的搜索引擎设计与实现 摘 要 网络中资源丰富 但是互联网上海量的信息 任何一个人都不能全部浏览 为了获取我们需要的信息 由此就产生了搜索引擎 而如今搜索引擎无法满足 增长着的网页数量 搜索引擎技术已经成为计算机界积极研究和开发的对象 网络爬虫是搜索引擎的基础 是最底层的技术 所以研究网络爬虫的实现技术 并研究其应用十分重要 论文详细说明了如何用 java 语言实现一个简易搜索引 擎 同时描述了搜索引擎的原理 系统功能 简要介绍了系统开发的背景 开 发环境 系统的需求分析 以及功能的设计与实现 关键词 关键词 搜索引擎 网络爬虫 搜索策略 design and implementation of search engine based on java abstract the resources on the internet are abundant but any one of us can t browse the great quantity information on the internet so the search engine appeared to obtain the information which we need however search engines can not meet the growth in the number of pages nowadays search engine technology has become the object of active research and development of computer industry web crawler is the foundation of all and this is the underlying technology so it is very important to develop the web crawler technology also it is very important to study the application of the web crawler technology this paper details how to implement a simple search engine with java language describes the principle of the search engine system functions and briefly introduces the background of the system development development environment requirements analysis and functional designation and implementation keywords search engine web spider search strategy 山东财经大学学士学位论文 目 录 一 引言一 引言 1 二 搜索引擎二 搜索引擎 1 一 搜索引擎的工作原理 1 二 搜索引擎的分类 1 三 搜索引擎技术发展 2 三 网络爬虫知识储备三 网络爬虫知识储备 2 一 深入学习 url 3 二 指定 url 获取网页 3 三 爬虫策略 4 1 宽度优先搜索 4 2 深度优先搜索 5 四 爬取链接 5 四 相关技术四 相关技术 6 一 web 访问过程 6 二 java 技术 7 三 网络编程 8 四 html 知识 8 五 需求分析五 需求分析 8 一 同步环境 8 二 功能需求 9 三 性能需求 9 四 输入输出要求 9 五 运行需求 9 六 概要设计六 概要设计 9 一 可行性论述 9 二 系统设计方案 9 三 各功能划分 10 四 主要存储结构 10 七 详细设计七 详细设计 10 二 获取网页实现 13 三 解析 html 实现 13 四 robots 文件 18 五 信息输出 19 八 结束语八 结束语 20 参考文献参考文献 20 致谢致谢 20 山东财经大学学士学位论文 0 一 引言 自从 www 于 1991 年诞生以来 已经发展成为拥有超过亿位用户和约 400 万站点 几十 亿页面的巨大信息空间 而且其信息容量仍在以指数形式飞速增长 www 是以超文本的形 式呈现给用户的 包含了从技术资料 商业信息到新闻报道 娱乐信息等多种类别和形式 的信息 超文本标识语言以其简单精练的语法 极易掌握的通用性与易学性 使 web 网页 可以亲近于每一个普通人 互联网也才得以普及发展以至今日的辉煌 然而 电子商务 电子图书 远程教育等全新领域如异军突起 迅猛发展并逐渐成为互联网世界必不可少且 愈发重要的组成部分 随之而来的是 web 文件的复杂化 多样化 智能化 于是高容量 高信息量 高效率便成为网络信息传输技术发展的追求 与此同时还有另一种需求变得愈 发广泛而迫切 那便是如何得到用户感兴趣的信息 由于 internet 是一个具有开放性 动 态性和异构性的全球分布式网络 资源分布很分散 且没有统一的管理和结构 这就导致 了信息获取的困难 如何快速 准确地从浩瀚的信息资源中寻找到所需信息己经成为困扰 网络用户的一大难题 这也就是所谓的 rich data poor information 问题 于是搜索引 擎便随之产生 像 mp3 搜索 视频搜索 图片搜索正是搜索的初步雏形 根据用户的搜索 意图 直接返回相关信息 对搜索引擎技术的研究 国外比中国要早近十年 从最早的 archie 到后来的 excite ahvista overture google 等搜索引擎问世 虽然在国外搜索引擎技术早就开 始研究 但在国内还是陆续涌现出优秀的搜索引擎 像百度 中搜等 随着搜索引擎技术的成熟 它将成为获取信息 掌握知识的利器 但是现有的搜索引 擎对于用户所提出的查询要求仅限于关键词的简单逻辑组合 搜索结果重视的是返回的数 量而不是质量 在结果文档的组织和分类上也有所欠缺 因此 如何提高搜索引擎的智能 化程度 如何按照知识应用的需要来组织信息 使互联网不仅提供信息服务 而且能为用 户提供知识服务 将成为计算机工业界和学术界有待研究的方向 而网络爬虫是这一切的 基础 是最底层的技术 所以解决这一问题就需要我们研究网络爬虫的实现技术并研究其 应用 二 搜索引擎 一 搜索引擎的工作原理 搜索引擎的原理 可以看作三步 从互联网上抓取网页 建立索引数据库 在索引数 据库中搜索 搜索引擎利用能够从互联网上自动收集网页的爬虫程序 自动访问互联网 并沿着网 页中的所有 url 爬到其它网页 重复这过程 并把爬过的所有网页收集回来 然后建立索 引数据库 由分析索引程序对收集回来的网页进行分析 提取相关网页信息 包括网页所 在 url 编码类型 页面内容包含的关键词 关键词位置 生成时间 大小 与其它网页 的链接关系等 然后用这些相关信息建立网页索引数据库 接下来在索引数据库中搜索排 序 当用户输入关键词搜索后 由搜索系统程序从网页索引数据库中找到符合该关键词的 所有相关网页 最后 由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织 起来返回给用户 二 搜索引擎的分类 获得网站网页资料 能够建立数据库并提供查询的系统 都可以把它叫做搜索引擎 真正意义上的搜索引擎 通常指的是收集了因特网上几千万到几十亿个网页并对网页中的 山东财经大学学士学位论文 1 每一个词 即关键词 进行索引 建立索引数据库的全文搜索引擎 当用户查找某个关键 词的时候 所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来 在经过 复杂的算法进行排序后 这些结果将按照与搜索关键词的相关度排列 按照工作原理的不 同 可以把它们分为两个基本类别 全文搜索和分类目录 全文搜索引擎通过从互联网上提取的各个网站的信息 以网页文字为主 而建立的数 据库中 检索与用户查询条件匹配的相关记录 然后按一定的排列顺序将结果返回给用户 从搜索来源的角度 全文搜索引擎又可细分为两种 一种是拥有自己的检索程序 即爬虫 程序 并自建网页数据库 搜索结果直接从自身的数据库中调用 另一种则是租用其他引 擎的数据库 并按自定的格式排列搜索结果 分类目录则是通过人工的方式收集整理网站资料形成数据库的 比如雅虎中国以及国 内的搜狐 新浪 网易分类目录 另外 在网上的一些导航站点 也可以归属为原始的分 类目录 三 搜索引擎技术发展 长期以来 人们只是通过传统的媒体 如电视 报纸 杂志和广播等 获得信息 但 随着计算机网络的发展 人们想要获取信息 已不再满足于传统媒体那种单方面传输和获 取的方式 而希望有一种主观的选择性 现在 网络上提供各种类别的数据库系统 如文 献期刊 产业信息 气象信息 论文检索等等 由于计算机网络的发展 信息的获取变得 非常及时 迅速和便捷 到了 1993 年 www 的技术有了突破性的进展 它解决了远程信息服务中的文字显示 数据连接以及图像传递的问题 使得 www 成为 internet 上最为流行的信息传播方式 现在 web 服务器成为 internet 上最大的计算机群 web 文档之多 链接的网络之广 令人难以 想象 可以说 web 为 internet 的普及迈出了开创性的一步 是近年来 internet 上取得 的最激动人心的成就 面对浩瀚的网络资源 搜索引擎为所有网上冲浪的用户提供了一个入口 毫不夸张的 说 所有的用户都可以从搜索出发到达自己想去的网上任何一个地方 搜索引擎技术伴随着 www 的发展是引人注目的 搜索引擎大约经历了三代的更新发展 第一代搜索引擎出现于 1994 年前后 以 altavista yahoo infoseek 为代表 注重 反馈结果的数量 主要特征是 求全 它主要依靠人工分拣的分类目录搜索 通常由网页 制作人自行建立网站名称 网站内容的文字摘要 并将其加入到搜索引擎的资料库中 搜 索引擎根据用户键入的信息 根据预先设定的规则进行简单的匹配 排序和显示 这种方 法只能进行简单的字符串匹配 无法进行全文搜索 研究表明 搜索引擎性能并没有想象 中的那么优秀 在全球 11 个主要的搜索引擎中 搜索引擎仅能搜索到国际互联网上全部页 面的 16 甚至更低 造成这种情况的原因 主要是这些搜索引擎没有及时更新资料 第二代搜索引擎 利用超链接分析为基础的机器抓取技术 由搜索引擎使用一个程序 在网络上撷取资料 并自动将得到的结果存入索引库中 搜索引擎根据用户键入的信息进 行匹配 排序和显示 这些引擎的主要特点是提高了查准率 可以用 求精 来描述它的 优点 即不需要网站制作人单独键入供搜索的信息 并且从理论上讲 可将任意网站的所 有网页加入到它的资料库中 第二代搜索引擎的大多数查询都会返回成千上万条信息 查 询结果中无关信息太多 而且查询结果显示比较混乱 使用者仍然难以找到真正想要的资 料 第三代搜索引擎是对第二代搜索引擎的改进 相对于前两代 其更注重智能化和用户 使用的个性化 主要增加了互动性和个性化等高级的技术 采用了中文自动分类 自动聚 山东财经大学学士学位论文 2 类等人工智能技术 而且使用了中文内容分析技术以及区域智能识别技术 增强了搜索引 擎的查询能力 同时 搜索技术将更加智能化 可搜索资源将更加广泛 搜索方式也将更 加便捷有效 为用户使用搜索引擎获取信息获得更好的体验 三 网络爬虫知识储备 一 深入学习url uri 通常由三部分组成 1 访问资源的命名机制 2 存放资源的主机名 3 资源自身 的名称 由路径表示 如 http 协议访问的资源 位于主机 上 通过路径 html html40 访问 url 是 uri 的一个子集 它是 uniform resource locator 的缩写 译为 统一资源定 位符 也可以说 url 是 internet 上描述信息资源的字符串 主要用在各种 www 客户程序 和服务器程序上 特别是著名的 mosaic 采用 url 可以用一种统一的格式来描述各种信 息资源 包括文件 服务器的地址和目录等 url 的格式由三部分组成 第一部分是协议 或称为服务方式 第二部分是存有该资源的主机 ip 地址 有时也包括端口号 第三部 分是主机资源的具体地址 如目录和文件名等 第一部分和第二部分用 符号隔开 第二部分和第三部分用 符号隔开 第一 部分和第二部分是不可缺少的 第三部分有时可以省略 http 协议的 url 使用超级文本传输协议 http 提供超级文本信息服务的资源 其计算机域名为 超级文本文件 文件类型为 html 是在目 录 channel 下的 welcome htm 其计算机域名为 超级文本文件 文件类型为 html 是在目录 talk 下的 talk1 htm 文件的 url 用 url 表示文件时 服务器方式用 file 表示 后面要有主机 ip 地址 文件的存取路径 即目录 和文件名等信息 有时可以省略目录和文件名 但 符号不能 省略 file 代表存放在主机 上的 pub files 目录下的一个文件 文件名是 foobar txt file 代表主机 上的目录 pub file 代表主机 的根目录 爬虫最主要的处理对象就是 url 它根据 url 地址取得所需要的文件内容 然后对它 进行进一步的处理 二 指定url获取网页 根据给定的 url 来抓取网页 所谓网页抓取 就是把 url 地址中指定的网络资源从网 络流中读取出来 保存到本地 类似于使用程序模拟 ie 浏览器的功能 把 url 作为 http 请求的内容发送到服务器端 然后读取服务器端的响应资源 java 语言是为网络而生的编 程语言 它把网络资源看成是一种文件 它对网络资源的访问和对本地文件的访问一样方 山东财经大学学士学位论文 3 便 它把请求和响应封装为流 因此我们可以根据相应内容 获得响应流 之后从流中按 字节读取数据 例如 url 类可以对相应的 web 服务器发出请求并且获得响应文 档 url 类有一个默认的构造函数 使用 url 地址作为参数 构造 url 对象 url pageurl new url path 接着可以通过获得的 url 对象来取得网络流 进而像操 作本地文件一样来操作网络资源 接着 可以通过获得的 url 对象来取得网络流 进而像 操作本地文件一样来操作网络资源 inputstream stream pageurl openstream 在实际的项目中 网络环境比较复杂 因此 只用 包中的 api 来模拟 ie 客户端的工作 代码量非常大 需要处理 http 返回的状态码 设置 http 代理 处理 https 协议等工作 为了便于应用程序的开发 实际开发时常常使用 apache 的 http 客户 端开源项目 httpclient 它完全能够处理 http 连接中的各种问题 使用起来非常方 便 只需在项目中引入 httpclient jar 包 就可以模拟 ie 来获取网页内容 本设计中还 是采用前者 三 爬虫策略 1 宽度优先搜索 在实际项目中 则使用爬虫程序遍历互联网 把网络中相关的网页全部抓取过来 这 也体现了爬虫程序 爬 的概念 爬虫程序是如何遍历互联网 把网页全部抓取下来的 互联网可以看成一个超级大的 图 而每个页面可以看作是一个 节点 页面中的链接 可以看成是图的 有向边 因此 能够通过图的遍历的方式对互联网这个超级大 图 进 行访问 图的遍历通常可分为宽度优先遍历和 深度优先遍历两种方式 但是深度优先遍历 可能会在深度上过 深 地遍历或者陷入 黑洞 大多数爬虫都不采用这种方式 图的宽度优先遍历 图的宽度优先遍历 bfs 算法是一个分层搜索的过程 和树的层序 遍历算法相同 在图中选中一个节点 作为起始节点 然后按照层次遍历的方式 一层一 层地进行访问 图的宽度优先遍历需要一个队列作为保存当前节点的子节点的数据结构 具体的算法如下所示 1 顶点 v 入队列 2 当队列非空时继续执行 否则算法为空 3 出队列 获得队头节点 v 访问顶点 v 并标记 v 已经被访问 4 查找顶点 v 的第一个邻接顶点 col 5 若 v 的邻接顶点 col 未被访问过 则 col 进队列 6 继续查找 v 的其他邻接顶点 col 转到步骤 5 若 v 的所有邻接顶点都已经被 访问过 则转到步骤 2 把互联网看成一个 超图 则对这张图也可以采用宽度优先遍历的方式进行访问 宽度优先遍历互联网 宽度优先遍历是从一个种子节点开始的 而实际的爬虫项目是 从一系列的种子链接开始的 所谓种子链接 就好比宽度优先遍历中的种子节点一样 实 际的爬虫项目中种子链接可以有多个 而宽度优先遍历中的种子节点只有一个 比如 指 定 种子链接 如何定义一个链接的子节点 每个链接对应一个 html 页面或 者其他文件 word excel pdf jpg 等 在这些文件中 只有 html 页面有相应的 子 节点 这些 子节点 就是 html 页面上对应的超链接 如页面中 招聘 网址 更多 以及页面下方的 搜索产品 技术文档 成功案例 新闻 联系我们 关于我们 english 等都是种子的子节点 这些子节点本身又是一个链接 对于非 html 文档 比如 excel 文件等 不能从中提取超链接 因此 可以看作是图的 终端 节点 整个的宽度优先爬虫过程就是从一系列的种子节点开始 把这些网页中的 子节点 山东财经大学学士学位论文 4 也就是超链接 提取出来 放入队列中依次进行抓取 被处理过的链接需要放入一张表 通 常称为 visited 表 中 每次新处理一个链接之前 需要查看这个链接是否已经存在于 visited 表中 如果存在 证明链接已经处理过 跳过 不做处理 否则进行下一步处理 todo 表todo 表 解析 url初始 url 图 3 1 宽度优先爬虫过程 初始的 url 地址是爬虫系统中提供的种子 url 一般在系统的配置文件中指定 当解 析这些种子 url 所表示的网页时 会产生新的 url 比如从页面中的 0 if maxurls 1 if crawledlist size maxurls break 从队列取出 url string url null if tocrawllist iterator hasnext try url string tocrawllist iterator next 山东财经大学学士学位论文 11 catch classcastexception e 从待爬队列中删除该 url tocrawllist remove url url verifiedurl verifyurl url string verifiedurlactiontime gettimestamp addresult verifiedurlactiontime 校验 url if isrobotallowed verifiedurl continue updatestats url crawledlist size tocrawllist size maxurls nothostlink s ize gt30kblist size add page to the crawled list crawledlist add url download the page at the given url string pagecontents downloadpage verifiedurl string processurlactiontime gettimestamp addresult processurlactiontime 处理 url writepage pagecontents verifiedurl integer tostring i i 若成功下载调用获取连接函数 if pagecontents null arraylist links retrievelinks verifiedurl pagecontents crawledlist nothostlink gt20kblist 添加链接 tocrawllist addall links 该方法里定义了一个循环 这个线程会重复地执行爬虫动作 在这个循环里 首先会 向 url 等待队列里请求一个 url 因为 url 队列会出现为空的情况 while crawling if tocrawllist iterator hasnext try url string tocrawllist iterator next catch classcastexception e 下载页面返回 html 内容 爬取页面链接返回 links 添加到 links 如果没有得到 url 就继续向 url 等待队列申请 当得到任务 url 以后 会通过这个 url 得到对应的 html 代码 具体方法是调用 downloadpage url pageurl 这个方法 二 获取网页实现 private string downloadpage url pageurl try bufferedreader reader new bufferedreader new inputstreamreader pageurl openstream string line stringbuffer pagebuffer new stringbuffer while line reader readline null pagebuffer append line return pagebuffer tostring catch exception e return null 这个方法是通过调用 java 里面的 url 这个类 可以用给定的 url 构造这个类的一个实 例 然后通过 openstream 这个方法得到 html 代码的数据流 然后再一行一行地把数据 流转换成 string 字符串 再用 stringbuffer 将这些字符串拼接成一个完整的 html 代码 三 解析 html 实现 从 html 代码中提取 urls 一种方法是通过检索字符串中的 href 字符串来实现的 对 于一个 html 代码 寻找其中的 href 字符串 然后记录它的下标 i 判断下标 i 1 位置上的 字符是双引号 单引号或者两者皆不是 然后选择对应的字符作为截取 url 的终止标记 山东财经大学学士学位论文 13 截取过后的 href 标记就剔除它与它前面的部分 以便而后的操作可以继续检索 href 标记 直到正个 html 代码中所有的 href 标记都被解析过后 操作终止 首页内陆片港台片日韩片 例如上面那段 html 代码 先检索 href 标记 然后判断出第 i 1 位为一个双引号 所 以可以截取 i 1 位到第 2 个双引号的位置 之间的这段字符串即为 url 当完成这一步操 作后 原字符串被截取从 class 开始 继续检索 href 标签 判断它的第 i 1 位为 一个单引号 所以又截取 i 1 位到第 2 个单引号的位置 这步以后原字符串又被截取为 target 开始 可以继续检索 href 标签 这个地方 href 没有接续任何符号 所以当 没有发现单引号或双引号的时候 可以判断为这种情况 就去检索空格和 标签 以下标较 小的字符作为截取 url 的结束标记 下面是 href 后面接续双引号情况的 java 代码 其他情况的代码方式相同 public void gethref urlslist string html text string fromurl urlqueuemanager urlqueuemanager int index 站内url队列 list linklist new arraylist string url html中是否还含有href标签 boolean havehref html text contains href while havehref html text html text substring html text indexof href 5 当 href 后以 开头的情况 if html text charat 0 html text html text substring 1 url html text substring 0 html text indexof url addurlhost fromurl url if issiteinsideurl url urlqueuemanager if urlqueuemanager iscontainurl url linklist add url havehref html text contains href urlqueuemanager waitqueueadd linklist 在每个 url 被截取出来之后 需要判断这些 url 是相对地址 还是绝对地址 如果截 取出来的 url 为 mlist 1 1 html 这种形式 即为相对地址 需要将其转化为绝对地址 山东财经大学学士学位论文 14 根据相对地址的概念 为返回上一层 所以可以得到这个相对地址的绝对地址 如果它 包含完整的协议信息 域名地址 可以判断它为绝对地址 相对地址与绝对地址的处理 if link indexof 1 处理绝对地址 if link startswith link http pageurl gethost pageurl getfile link substring 2 link length else if link startswith link http pageurl gethost link substring 3 link length else string file pageurl getfile if file indexof 1 link http pageurl gethost link else string path file substring 0 file lastindexof 1 link http pageurl gethost path link 当得到这些完整的 url 地址以后 需要对其进行过滤 很多 url 它们指向的文件不是 html 文件 而是一些 css 文件 或者 rar 包文件 或者只是接续 符号 代表只是调 用一段 javascript 代码 像这种情况就直接抛弃这些 urls 下面一段代码通过检索 url 字符串中是否包含 css rar zip 这些后缀来进 行判断 如果url中包含以下 字符串 则不加入队列 if url tolowercase contains css url tolowercase contains rar url contains url contains zip url contains javascript return false 过滤完后的 urls 再判断它为站内 url 或者为站外 url 一般情况下同一网站内的 url 的 host 名因该是一致的 所以可以通过判断 urls 中是否包含站点 host 就可以了 如 果为站内 url 则加入到缓存队列 山东财经大学学士学位论文 15 string starthost verifiedlink gethost tolowercase int indexofpoint if indexofpoint starthost indexof 1 starthost starthost substring indexofpoint 1 string pagehost pageurl gethost tolowercase if indexofpoint pagehost indexof 1 pagehost pagehost substring indexofpoint 1 if pagehost equalsignorecase starthost if nothostlink contains verifiedlink nothostlink add verifiedlink string nothostlinkaction gettimestamp addresult nothostlinkaction 链接不属于主机 verifiedlink continue 另一种方法可利用正则表达式 通过 pattern 类 matcher 类实现 正则表达式功能 强大能得到任何想得到的网页数据如获得链接 标题等内容 string strref 具体如下 设置查找的匹配模式 pattern p ppile pattern case insensitive matcher m p matcher pagecontents 创建数组 linklist 存放匹配到的字符串 arraylist linklist new arraylist while m find 处理匹配的链接 筛选合格的 linklist add link string urlactiontime gettimestamp addresult urlactiontime 添加到队列 link return linklist 具体筛选过程跳过各种不符合的链接 string link m group 1 trim 跳过空链接 if link length 1024 20 if gt20kblist contains verifiedlink gt20kblist add verifiedlink string gt20kblinkaction gettimestamp 山东财经大学学士学位论文 17 addresult gt20kblinkaction 页面大小 20 kb verifiedlink continue 四 robots 文件 robots txt 是搜索引擎中访问网站的时候要查看的第一个文件 robots txt 文 件告诉蜘蛛程序在服务器上什么文件是可以被查看的 当一个搜索蜘蛛访问一个站点时 它会首先检查该站点根目录下是否存在robots txt 如果存在 搜索机器人就会按照 该文件中的内容来确定访问的范围 如果该文件不存在 所有的搜索蜘蛛将能够访问网 站上所有没有被口令保护的页面 robots txt 必须放置在一个站点的根目录下 而且 文件名必须全部小写 最简单的 robots txt 文件使用两条规则 1 user agent 适用下列规则的漫游 2 disallow 要拦截的网页 allow 允许语法是和 disallow 结合起来使用的 一般网站中不需要蜘蛛抓取的文 件有 后台管理文件 程序脚本 附件 数据库文件 编码文件 样式表文件 模板文 件 导航图片和背景图片等等 如 user agent disallow admin 后台管理文件 disallow require 程序文件 disallow attachment 附件 disallow images 图片 disallow data 数据库文件 disallow template 模板文件 disallow css 样式表文件 disallow lang 编码文件 disallow script 脚本文件 允许所有搜索引擎访问网站的所有部分或者建立一个空白的文本文档 命名为 robots txt 或者写为 user agent disallow 检测 robot 是否允许访问给出的 url private boolean isrobotallowed url urltocheck string host null try host string urltocheck gethost tolowercase 获取给出 rul 的主机 catch nullpointerexception e 获取主机不允许搜索的 url 缓存 山东财经大学学士学位论文 18 arraylist disallowlist arraylist disallowlistcache get host 如果还没有缓存 下载并缓存 if disallowlist null disallowlist new arraylist try url robotsfileurl new url http host robots txt bufferedreader reader new bufferedreader new inputstreamreader robotsfileurl openstream 读 robot 文件 创建不允许访问的路径列表 string line while line reader readline null if line indexof disallow 0 是否包含 disallow string disallowpath line substring disallow length 获取不允许访问路径 检查是否有注释 int commentindex disallowpath indexof if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 音乐制作人面试问题及答案
- 小儿脑部发育课件
- 难点解析四川省阆中市中考数学真题分类(一次函数)汇编单元测评试卷(含答案详解版)
- 学校宿舍用品赠送合同范本
- 双方共同出资购车合同协议书
- 三方购销合同转让协议书
- 废弃农场转让合作合同范本
- 出租山地给人的合同范本
- 冷库销售与施工合同范本
- 公司不再追责协议书模板
- HG/T 2952-2023 尿素二氧化碳汽提塔技术条件 (正式版)
- DZ∕T 0054-2014 定向钻探技术规程(正式版)
- 福建省泉州市五中七中等七校联合2022-2023学年八年级上学期期末教学质量检测数学试题
- 预防老年人保健品骗局
- 安全生产培训(完整版)课件
- 钢结构长廊施工方案
- 信保业务自查问题统计表
- 年产3万吨环保型铝箔容器系列产品生产线项目环境影响报告
- 安庆汇辰药业有限公司高端原料药、医药中间体建设项目环境影响报告书
- 关于术中知晓预防和脑功能监测专家共识
- 河道修防工高级工试题
评论
0/150
提交评论