搜索引擎-第二次实验报告.docx
201620171学期搜索引擎技术实验报告1/6实验二实验一、实验目的根据网络爬虫的基本原理,实现一个简易网络爬虫,需要达到以下指标1、种子URL为WWWSWUSTEDUCN;2、至少抓取10000个页面;3、至少完成3轮抓取,每轮给出更新的URL及其数量;4、实现URL判重,列出每轮爬去时重复的URL数量;5、数据存放到数据库中,能抽取出网页中的标题、页面生成日期(HTTP协议中的时间),至少包含标题、时间、URL、抓取时间、网页正文这几个字段。二、实验方案1爬虫分析与设计我们组应用的是JAVA来写爬虫,我们应用SSM框架将数据库和应用程序连接起来,可以在程序中更简单的进行数据库插入、查询等操作。在对URL处理的时候我们用的是JAVA的URL类,通过这个类可以获得请求头的一些信息,例如编码方式。如何获取URL,我们一开始遇到了一些问题,直接解析网页中的REF标签的时候得到的不全是网页链接,所以转换思路,我们先得到页面中的标签,然后再得到标签里边HREF中的URL,然后再对URL进行处理。在处理URL的时候,因为网页中的URL并不是全部以HTTP开头的,所以在URL获取部分,对URL的格式进行判断,如果通常格式就进行修改,例如,有的链接是””,我们就把开始搜索的URL加到它的前边,形成一个正确的URL。201620171学期搜索引擎技术实验报告2/6图1应用URL类获取网页内容图2利用URL请求头获取编码信息图3获取A标签201620171学期搜索引擎技术实验报告3/6图41获取URL图42获取URL201620171学期搜索引擎技术实验报告4/6图5URL判重2数据库分析与设计我们设计了两个表,一个是未爬取URL表,两一个是已经爬取URL表。未爬取的表中村的是搜索判重之后,还没有爬取的URL,已爬取的存储爬取到的信息。图6判重后需要爬取的URL表图7爬取后URL信息存储表201620171学期搜索引擎技术实验报告5/6图9去重后URL的部分信息图10爬取结果部分信息图11网页内容存TXT部分信息三、实验结果及分析201620171学期搜索引擎技术实验报告6/6试验中每一次爬取的网页数量都是超过了10000的,达到了数量上的要求,但是在处理的过程中,对于中文的解析有的并不理想,这个是因为有的URL在请求头里边没有网页的编码信息,所以对于这种网页的处理是按照“UTF8”的编码方式处理的,所以得到的数据可能会有乱码。此外有的网页中没有标签,所以有的标题不可以得到。在一开始的时候爬虫程序就是简单的按顺序获取网页内容,内因程序写的效率不高,爬取2000网页就用了一个小时,所以在之后用到了三个线程同时爬取,使得爬取的速度有了很大的提升。图12三次爬取结果对比四、实验总结优点爬取数据的存取应用了数据库,相较文本而言,应用数据库在数据的存取上十分的方便,效率要高很多,因为如果用文本进行存取,每一次比较数据的时候都要把文本遍历一遍,时空效率都很低,另外用数据库存数据条目很清晰,可以方便观察爬取到的数据;爬取数据运用多线程,有效的提高了爬取效率,在没有用多线程进行爬取的时候2000个URL爬取了1个小时,之后用了3个线程同时爬取数据,爬取的效率有了明显的提高。缺点文本处理有瑕疵,有的网页在请求头没有给出编码信息,所以获得到的文本信息含有乱码,有的没有给出网页的发布时间,所以只有把发布时间默认成爬取的时间。有的网页中没有TITLE标签,没有办法得到URL的标题。在网上看到了一些论文,有针对乱码、网页文本提取等问题的解决方法,因为这一次的经验不够多,不能在时限之内完善爬虫的功能,之后会根据论文的描述进一步完善。