当前位置:文档之家› 搜索引擎-第二次实验报告

搜索引擎-第二次实验报告

实验二:实验
一、实验目的:
根据网络爬虫的基本原理,实现一个简易网络爬虫,需要达到以下指标:
1、种子URL为;
2、至少抓取10000个页面;
3、至少完成3轮抓取,每轮给出更新的URL及其数量;
4、实现URL判重,列出每轮爬去时重复的URL数量;
5、数据存放到数据库中,能抽取出网页中的标题、页面生成日期(http协议中的时间),至少包含标题、时间、url、抓取时间、网页正文这几个字段。

二、实验方案:
1.爬虫分析与设计
我们组应用的是java来写爬虫,我们应用SSM框架将数据库和应用程序连接起来,可以在程序中更简单的进行数据库插入、查询等操作。

在对url处理的时候我们用的是Java的URL类,通过这个类可以获得请
求头的一些信息,例如编码方式。

如何获取url,我们一开始遇到了一些问题,直接解析网页中的ref 标签的时候得到的不全是网页链接,所以转换思路,我们先得到页面中
的<a>标签,然后再得到<a>标签里边href中的url,然后再对url进行处
理。

在处理url的时候,因为网页中的url并不是全部以http开头的,所以在url获取部分,对url的格式进行判断,如果通常格式就进行修改,例如,有的链接是”#”,我们就把开始搜索的url加到它的前边,形成一
个正确的url。

图1:应用URL类获取网页内容
图2:利用url请求头获取编码信息
图3:获取a标签
图4-1:获取url
图4-2:获取url
图5:url判重
2.数据库分析与设计
我们设计了两个表,一个是未爬取url表,两一个是已经爬取url表。

未爬取的表中村的是搜索判重之后,还没有爬取的url,已爬取的存储爬取到的信息。

图6:判重后需要爬取的url表
图7:爬取后url信息存储表
图9:去重后url的部分信息
图10:爬取结果部分信息
图11:网页内容存txt部分信息三、实验结果及分析:
试验中每一次爬取的网页数量都是超过了10000的,达到了数量上的要求,但是在处理的过程中,对于中文的解析有的并不理想,这个是因为有的url在请求头里边没有网页的编码信息,所以对于这种网页的处理是按照“utf-8”的编码方式处理的,所以得到的数据可能会有乱码。

此外有的网页中没有<title>标签,所以有的标题不可以得到。

在一开始的时候爬虫程序就是简单的按顺序获取网页内容,内因程序写的效率不高,爬取2000+网页就用了一个小时,所以在之后用到了三个线程同时爬取,使得爬取的速度有了很大的提升。

图12:三次爬取结果对比
四、实验总结:
优点:
爬取数据的存取应用了数据库,相较文本而言,应用数据库在数据的存取上十分的方便,效率要高很多,因为如果用文本进行存取,每一次比较数据的时候都要把文本遍历一遍,时空效率都很低,另外用数据库存数据条目很清晰,可以方便观察爬取到的数据;爬取数据运用多线程,有效的提高了爬取效率,在没有用多线程进行爬取的时候2000+个url爬取了1个小时,之后用了3个线程同时爬取数据,爬取的效率有了明显的提高。

缺点:
文本处理有瑕疵,有的网页在请求头没有给出编码信息,所以获得到的文本信息含有乱码,有的没有给出网页的发布时间,所以只有把发布时间默认成爬取的时间。

有的网页中没有title标签,没有办法得到url的标题。

在网上看到了一些论文,有针对乱码、网页文本提取等问题的解决方法,因为这一次的经验不够多,不能在时限之内完善爬虫的功能,之后会根据论文的描述进一步完善。

相关主题