收藏 分销(赏)

搜索引擎及搜索引擎优化(SEO)实验.doc

上传人:s4****5z 文档编号:8897697 上传时间:2025-03-07 格式:DOC 页数:51 大小:920KB 下载积分:10 金币
下载 相关 举报
搜索引擎及搜索引擎优化(SEO)实验.doc_第1页
第1页 / 共51页
搜索引擎及搜索引擎优化(SEO)实验.doc_第2页
第2页 / 共51页


点击查看更多>>
资源描述
实验三 搜索引擎及SEO实验 一、实验目的 研究并学习几种常见的搜索引擎算法,包括网络蜘蛛爬行策略、中文分词算法、网页正文提取算法、网页去重算法、PageRank和MapReduce算法,了解它们的基本实现原理;运用所学SEO技术对网页进行优化。 二、实验内容 1. 研究常用的网络蜘蛛爬行策略,如深度优先策略、广度优先策略、网页选择策略、重访策略和并行策略等,了解其实现原理; 2. 研究至少两种中文分词算法,了解其实现原理; 3. 研究至少两种网页正文提取算法,了解其实现原理; 4. 研究至少两种网页去重算法,了解其实现原理; 5. 研究Google的PageRank和MapReduce算法,了解它们的实现原理; 6. 使用所学的SEO技术,对实验二所设计的网站静态首页实施SEO,在实施过程中需采用如下技术: (1) 网页标题(title)的优化; (2) 选取合适的关键词并对关键词进行优化; (3) 元标签的优化; (4) 网站结构和URL的优化; (5) 创建robots.txt文件,禁止蜘蛛抓取网站后台页面; (6) 网页内部链接的优化; (7) Heading标签的优化; (8) 图片优化; (9) 网页减肥技术。 7. 使用C++、C#和Java等任意一种编程语言,设计并实现一个简单的网络蜘蛛爬行程序,要求在输入关键词、设置爬行深度和初始网页URL之后能够实现网页搜索,输出包含关键词的网页的URL和网页标题。【注:实验7为补充实验,不要求每个同学都完成,感兴趣者可自行实现该程序,不计入实验报告评分。】 三、实验要求 1. 研究几种常用的网络蜘蛛爬行策略,填写相应的表格,表格必须填写完整; 2. 研究两种中文分词算法,填写相应的表格,表格必须填写完整; 3. 研究两种网页正文提取算法,填写相应的表格,表格必须填写完整; 4. 研究两种网页去重算法,填写相应的表格,表格必须填写完整; 5. 研究PageRank算法和MapReduce算法,填写相应的表格,表格必须填写完整; 6. 提供实施SEO之后的网站静态首页界面和HTML代码,尽量多地使用所学SEO技术; 7. 严禁大面积拷贝互联网上已有文字资料,尽量用自己的理解来阐述算法原理,必要时可以通过图形来描述算法; 8. 使用任意一种编程语言实现一个简单的网络蜘蛛程序,需提供网络蜘蛛程序完整源代码及实际运行结果。 四、实验步骤 1. 通过使用搜索引擎并查阅相关资料,研究并整理几种常用的网络蜘蛛爬行策略相关资料,填写相应的表格; 2. 通过使用搜索引擎并查阅相关资料,研究并整理两种中文分词算法的基本原理,填写相应的表格; 3. 通过使用搜索引擎并查阅相关资料,研究并整理两种网页正文提取算法的基本原理,填写相应的表格; 4. 通过使用搜索引擎并查阅相关资料,研究并整理两种网页去重算法的基本原理,填写相应的表格; 5. 通过使用搜索引擎并查阅相关资料,研究并整理PageRank算法和MapReduce算法的基本原理,填写相应的表格; 6. 对实验二所设计的网站静态首页实施SEO; 7. 使用任意一种编程语言,设计并实现一个简单的网络蜘蛛爬行程序。 五、实验报告要求 1. 研究几种常用的网络蜘蛛爬行策略并填写如下表格: 策略名称 基本原理 参考资料 深度优先策略 深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其他超链可选择时,说明搜索已经结束。 百度百科 深度优先搜索: 广度优先策略 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位址,彻底地搜索整张图,直到找到结果为止。 百度百科 广度优先搜索: 网页选择策略 对搜索引擎而言,要搜索互联网上所有的网页几乎不可能,即使全球知名的搜索引擎google也只能搜索整个Internet网页的30%左右。其中的原因主要有两方面,一是抓取技术的瓶颈。网络爬虫无法遍历所有的网页;二是存储技术和处理技术的问题。因此,网络爬虫在抓取网页时。 尽量先采集重要的网页,即采用网页优先抓取策略。 网页选择策略是给予重要程度、等级较高的Web页以较高的抓取优先级,即Web页越重要,则越应优先抓取。其实质上是一种使网络爬虫在一定条件下较快地锁定互联网中被用户普遍关注的重要信息资源的方法。而实现该策略的前提是正确评测Web页的重要程度bJ,目前评测的主要指标有PageRank值、平均链接深度等。 李志义《网络爬虫的优化策略探略》,广东广州510631 重访策略 (1)依据Web站点的更新频率确定重访频率 此法符合实际情况,能够更有效地管理和利用网络爬 虫。例如,门户网站通常每天要不断地更新信息和添加新 的信息,重访的频率则以天或小时为周期进行网页的重访。 (2)不关心Web站点的更新频率问题,而是间隔一段 时间重访已被抓取的冈页。其弊端是重复抓取的概率大, 容易造成不必要的资源浪费。 (3)根据搜索引擎开发商对网页的主观评价,提供个 性化的服务 网页的重访需要搜索引擎开发商对主要的站点进行网 页更新频率的主观评价,可以根据需求提供个性化的服务。 李志义《网络爬虫的优化策略探略》,广东广州510631 并行策略 实施并行策略的核心是在增加协同工作的爬虫数量的同时,科学合理地分配每个爬虫的任务,尽量避免不同的爬虫做相同的Web信息抓取。一般通过两种方法来分配抓取任务,一是按照Web站点所对应的m地址划分任务,一个爬虫只需遍历某一组地址所包含Web页即可;另一种方法是依据Web站点的域名动态分配爬行任务,每个爬虫完成某个或某些域名段内Web信息的搜集。 李志义《网络爬虫的优化策略探略》,广东广州510631 2. 研究两种中文分词算法并填写如下表格: 算法名称 基本原理 参考资料 算法一:最大匹配算法 最大匹配算法是一种有着广泛应用的机械分词方法,该方法依据一个分词词表和一个基本的切分评估原则.即“长词优先”原则,来进行分词 张玉茹 肇庆526070《中文分词算法之最大匹配算法的研究》 算法二:基于无词典的分词算法 基于汉字之间的互信息和t-测试信息的分词算法。汉语的词可以理解为字与字之间的稳定结合,因此。如果在上下文中某几个相邻的字出现的次数越多,那么,这几个字成词的可能性就很大。根据这个道理引入互信息(Mutual information)和t-测试值(t—score)的概念,用来表示两个汉字之间结合关系的紧密程度。该方法的分词原理是:对于一个汉字字符串,计算汉字之间的互信息和t-测试差信息,选择互信息和t-测试差信息大的组成词。该方法的局限性是只能处 理长度为2的词,且对于一些共现频率高的但并不是词的字组,常被提取出来,并且常用词的计算开销大,但可以识别一些新词,消除歧义。对于一个成熟的 分词系统来说,不可能单独依靠某一个算法来实现,都需要综合不同的算法,在实际的应用中,要根据具体的情况来选择不同的分词方案。 刘红芝 徐州医学院图书馆 江苏徐州221004《中文分词技术的研究》 3. 研究两种网页正文提取算法并填写如下表格: 算法名称 基本原理 参考资料 算法一基于相似度的中文网页正文提取算法 正文文本在HTML源文件中有两种修饰方式:有标签提示和无标签提示。有标签文本中标签的作用一般包含分块信息、表格信息、或者文本的字体颜色信息等。这种文本采用基于分块的方法能有不错的效果。而无标签信息的正文文本处理之后不在分块中,也不在表格内。采用先分块后提取放入网页正文提取方法,无法达到理想的精度。本文提出根据相似度来提取网页正文的算法。算法分为两个步骤:首先取出网页中包含中文最多的行,然后利用鉴于此余弦相似度匹配和标签相似度来提取网页正文。该算法最大的特点是 避免了上述的分块步骤。 熊子奇张晖林茂松 (西南科技大学计算机科学与技术学院四川绵阳621010) 《基于相似度的中文网页正文提取算法》 算法二基于FFT的网页正文提取算法研究与实现 给定一个底层网页的HTML源文件, 求解最佳的正文区问。对于任何字符串区间(b,e),(O≤6<e≤s s为源文件的长度.S为源文件),都有一个评价值,问题转化 为求评价函数的最大解。 李蕾,王劲林,白鹤,胡晶晶 《基于FFT的网页正文提取算法研究与实现》 4. 研究两种网页去重算法并填写如下表格: 算法名称 基本原理 参考资料 算法一:同源网页去重URL哈希值计算. 构造一个适当的哈希函数H可得到从网页 URL字符序列到哈希值的映射,相同的URL字符串会得到相同的哈希值,从而说明该URL已被下载过.在对解析出来的URL进行预处理后,以其各字符对应的码值按下式计算出其哈希值: 式中为解析出的网页URL集合;Ai为Ui的哈希地址;ni为对Ui进行预处理后的字串长度;Ck为对Ui进行预处理后左起第k个字符的码值;S为哈希槽容量.上式表示从URL字符串U到其哈希散列值H的映射关系. 输入:URL;S. 输出:URL哈希值. 算法描述: (1)针对URL初始化; (2)按照式(1)进行URI。哈希值计算; (3)释放空间,返回哈希值. 高凯,王永成, 肖君 上海200030《网页去重策略》 算法二:基于网页内容的去重 用网页主体内容间的相似程度来判断它们 是否为近似相同,而网页主体采用主题概念进行表示.当两个网页主体相似比例达到设定的经验阈值时就认为它们为近似相同,不需重复下载.网页Ui(i∈[1,n])使用特征向量进行表示,其主题概念权 值wij采用以tfidf为主其他策略为辅的方式来确定, 上式对tfidf算子(用t表示)乘以一个因子C来表示不同类型的页面tags对权值的影响,目的是对位于不同位置的词条作不同的加权处理.通过试验分析可以确定针对不同tag标记相应的系数C的经验 值.同时综合考虑概念长因子z、词性因子P等诸多因素,加权体系可表示为上述诸多因素的一个函数, 最后输出最能代表该文档的优个权值较大的主题概念.而用来判断两个网页A和B之间相似的标准是通过统计主题概念词串的共现个数.如果共现个数大于预先设定的经验阈值,就认为网页A和B为近似相似. 高凯,王永成, 肖君 上海200030《网页去重策略》 5. 研究PageRank算法和MapReduce算法并填写如下表格: 算法名称 基本原理 参考资料 PageRank PageRank超链分析算法是Google搜索引擎采用的页面排序算法。Google沿用了传统搜索引擎的架构设计,其与传统的搜索引擎最大的不同之处在于它对网页进行了排序处理,使在最重要的网页出现在检索结果的最前面,其核心就是PageRank超链分析算法。通过计算出网页的PageRank值,从而决定网页在查淘返回结果集中的位置。PageRank值越高的网页,在返回结果中越靠前。 该算法基于下面2个前提: 前提1:一个网页被多次链接,则它可能是很重要的;一个网页虽然没有被多次引用,但是被重要的网页链接,则它也可能是很重要的;一个网页的重要性平均地传递到它所链接的网页。 前提2:假定用户一开始随机地访问网页集合中的一个网页,以后跟随网页的链接向前浏览网页,从不回退浏览,而浏览者选择本页中任意一个链接前进的 概率是相等的。在每个一个页面,浏览者都有可能对本页面的链接不再感兴趣,从而随机选择一个新的页面开始新的浏览。这个离开的可能设为d。从而页面的PageRank值就是浏览者访问到该网页的概率。 设定一个网页A,假设指向它的网页有T1,T2,...,Tn。令C(A)为A出发 指向其它页面的链接数目,PR(A)为A的PageRank,d为衰减因子(通常设为 0.85),则有: 陈杰 浙江大学 《主题搜索引擎中网络蜘蛛搜索策略研究》 MapReduce MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组 百度百科MapReduce 6. 提供通过SEO优化之后的网站首页静态效果图和完整的HTML源代码。 <!-- saved from url=(0048)file:///C:/Users/Administrator/Desktop/image.htm --> <html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>蓝天数码城_专业的电竞鼠标,耳机,键盘网上购物商城</title> <meta name="description" content="蓝天数码城是专业的电竞鼠标,耳机,键盘网上购物商城,为您提供愉悦的网上商城购物体验"/> <meta name="keywords" content="鼠标,键盘,耳机"/> <meta name="robots" content="="index,follow"/> </head> <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <div align="center"><!-- Save for Web Slices (index.psd) --> <table id="__01" width="1025" height="883" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td><img src="./index_files/分隔符.gif" width="1" height="1" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="129" height="1" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="245" height="1" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="3" height="1" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="1" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="1" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="644" height="1" alt=""></td> <td></td> </tr> <tr> <td colspan="3" rowspan="2"> <img src="./index_files/index_01.jpg" width="375" height="155" alt=""></td> <td colspan="4"> <img src="./index_files/index_02.jpg" width="649" height="115" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="115" alt=""></td> </tr> <tr> <td colspan="3"> <img src="./index_files/index_03.jpg" width="5" height="40" alt=""></td> <td rowspan="6"> <img src="./index_files/index_04.jpg" width="644" height="264" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="40" alt=""></td> </tr> <tr> <td> <img src="./index_files/index_05.jpg" width="1" height="1" alt=""></td> <td colspan="5" rowspan="2"> <img src="./index_files/index_06.jpg" width="379" height="187" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="1" alt=""></td> </tr> <tr> <td> <img src="./index_files/index_07.jpg" width="1" height="186" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="186" alt=""></td> </tr> <tr> <td colspan="2" rowspan="2"> <img src="./index_files/index_08.jpg" width="130" height="13" alt=""></td> <td colspan="4"> <img src="./index_files/index_09.jpg" width="250" height="2" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="2" alt=""></td> </tr> <tr> <td colspan="3"> <img src="./index_files/index_10.jpg" width="249" height="11" alt=""></td> <td> <img src="./index_files/index_11.jpg" width="1" height="11" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="11" alt=""></td> </tr> <tr> <td rowspan="8"> <img src="./index_files/index_12.jpg" width="1" height="219" alt=""></td> <td colspan="5" rowspan="2"> <img src="./index_files/index_13.jpg" width="379" height="42" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="24" alt=""></td> </tr> <tr> <td rowspan="8"> <img src="./index_files/index_14.jpg" width="644" height="227" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="18" alt=""></td> </tr> <tr> <td rowspan="6"> <img src="./index_files/index_15.jpg" width="129" height="177" alt=""></td> <td colspan="2"> <img src="./index_files/index_16.jpg" width="248" height="4" alt=""></td> <td colspan="2" rowspan="7"> <img src="./index_files/index_17.jpg" width="2" height="209" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="4" alt=""></td> </tr> <tr> <td colspan="2"> <img src="./index_files/index_18.jpg" width="248" height="41" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="41" alt=""></td> </tr> <tr> <td colspan="2"> <img src="./index_files/index_19.jpg" width="248" height="46" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="46" alt=""></td> </tr> <tr> <td colspan="2"> <img src="./index_files/index_20.jpg" width="248" height="46" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="46" alt=""></td> </tr> <tr> <td colspan="2"> <img src="./index_files/index_21.jpg" width="248" height="38" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="38" alt=""></td> </tr> <tr> <td colspan="2" rowspan="4"> <img src="./index_files/index_22.jpg" width="248" height="310" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="2" alt=""></td> </tr> <tr> <td colspan="2" rowspan="3"> <img src="./index_files/index_23.jpg" width="130" height="308" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="32" alt=""></td> </tr> <tr> <td colspan="3"> <img src="./index_files/index_24.jpg" width="646" height="167" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="167" alt=""></td> </tr> <tr> <td colspan="2"> <img src="./index_files/index_25.jpg" width="2" height="109" alt=""></td> <td> <img src="./index_files/index_26.jpg" width="644" height="109" alt=""></td> <td> <img src="./index_files/分隔符.gif" width="1" height="109" alt=""></td> </tr> </tbody></table> </div> <!-- End Save for Web Slices --> </body></html> 7. 选做:提供网络蜘蛛程序完整源代码及实际运行结果界面截屏(实验报告中需包含源代码和界面截屏)。 import javax.swing.*; import java.awt.*;// need this to access the color object /* * IntegerVerifier.java * */ /** * Input Verifier to verifier integer text fields * * Checks for valid integer input, and to see if the number is between a * specified max and min value. * * @author Mark Pendergast */ public class IntegerVerifier extends javax.swing.InputVerifier { /** listener to get valid/invalid data reports */ private VerifierListener listener = null; /** blank fields allowed, true for ok, false for error */ private boolean blankOk = false; /** minimum valid value */ int minValue = Integer.MIN_VALUE; /** maximum valid value*/ int maxValue = Integer.MAX_VALUE; /** Creates a new instance of IntegerVerifier * * @param alistener VerifierListener to receive invalid/valid data class (null means no listener) * @param blankok if true, then the field can be left blank * @param min minimum valid value * @param max maximum valid value */ public IntegerVerifier(VerifierListener alistener, boolean blankok, int min, int max) { listener = alistener; blankOk = blankok; minValue = min; maxValue = max; } /** * Verifies contents of the specified component * * @param jComponent the component to check * @return true if the component is ok, else false * */ public boolean verify(javax.swing.JComponent jComponent) { JTextField thefield = (JTextField)jComponent; String input = thefield.getText(); int number; input = input.trim(); // strip off leading and trailing spaces as these gives Integer.parseInt problems if(input.length() == 0 && blankOk) { thefield.setForeground(Color.black); if(listener != null) listener.validData(jComponent); return true; // if empty, just return true } else if(input.length() == 0 && !blankOk) { reportError(thefield,"Field cannot be blank!"); return false; // if empty, just return true } /* * try to convert to an integer */ try{ number = Integer.parseInt(input); } catch (NumberFormatException e) { reportError(thefield,"You must enter a valid number"); return false; } /* * test if its in the range */ if(number < minValue || number > maxValue) { reportError(thefield,"You must enter a number between "+minValue+" and "+maxValue); return false; } /* * report good data */ thefield.setForeground(Color.black); thefield.setText(""+number); // reset what we converted into the component if(listener != null) listener.validData(jComponent); return true; // valid input found } /** * report error to the listener (if any) * @param thefield text field being checked * @param message error message to report */ private void reportError(JTextField thefie
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服