摘要
网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息等。
本文通过JAVA实现了一个基于广度优先算法的多线程爬虫程序。本论文阐述了网络爬虫实现中一些主要问题:为何使用广度优先的爬行策略,以及如何实现广度优先爬行;为何要使用多线程,以及如何实现多线程;系统实现过程中的数据存储;网页信息解析等。
通过实现这一爬虫程序,可以搜集某一站点的URLs,并将搜集到的URLs存入数据库。
【关键字】网络爬虫;JAVA;广度优先;多线程。
ABSTRACT
SPIDER is a program which can auto collect informations from internet. SPIDER can collect data for search engines, also can be a Directional information collector, collects specifically informations from some web sites, such as HR informations, house rent informations.
In this paper, use JAVA implements a breadth-first algorithm multi-thread SPDIER. This paper expatiates some major problems of SPIDER: why to use breadth-first crawling strategy, and how to implement breadth-first crawling; why to use multi-threading, and how to implement multi-thread; data structure; HTML code parse. etc. This SPIDER can collect URLs from one web site, and store URLs into database.
【KEY WORD】SPIDER; JAVA; Breadth First Search; multi-threads.第一章 引言1
第二章 相关技术介绍2
2.1 JAVA线程2
2.1.1 线程概述2
2.1.2 JAVA线程模型2
2.1.3 创建线程3
2.1.4 JAVA中的线程的生命周期4
2.1.5 JAVA线程的结束方式4
2.1.6 多线程同步5
2.2 URL消重5
2.2.1 URL消重的意义5
2.2.2 网络爬虫URL去重储存库设计5
2.2.3 LRU算法实现URL消重7
2.3 URL类访问网络8
2.4 爬行策略浅析8
2.4.1宽度或深度优先搜索策略8
2.4.2 聚焦搜索策略9
2.4.3基于内容评价的搜索策略9
2.4.4 基于链接结构评价的搜索策略10
2.4.5 基于巩固学习的聚焦搜索11
2.4.6 基于语境图的聚焦搜索11
第三章 系统需求分析及模块设计13
3.1 系统需求分析13
3.2 SPIDER体系结构13
3.3 各主要功能模块(类)设计14
3.4 SPIDER工作过程14
第四章 系统分析与设计16
4.1 SPIDER构造分析16
4.2 爬行策略分析17
4.3 URL抽取,解析和保存18
4.3.1 URL抽取18
4.3.2 URL解析19
4.3.3 URL保存19
第五章 系统实现21
5.1 实现工具21
5.2 爬虫工作21
5.3 URL解析22
5.4 URL队列管理24
5.4.1 URL消重处理24
5.4.2 URL等待队列维护26
5.4.3 数据库设计27
第六章 系统测试29
第七章 结论32
参考文献33
致谢34
外文资料原文35
译文51
第一章 引言
随着互联网的飞速发展,网络上的信息呈爆炸式增长。这使得人们在网上找到所需的信息越来越困难,这种情况下搜索引擎应运而生。搜索引擎搜集互联网上数以亿计的网页,并为每个词建立索引。在建立搜索引擎的过程中,搜集网页是非常重要的一个环节。爬虫程序就是用来搜集网页的程序。以何种策略偏历互联网上的网页,也成了爬虫程序主要的研究方向。现在比较流行的搜索引擎,比如google,百度,它们爬虫程序的技术内幕一般都不公开。目前几种比较常用的爬虫实现策略:广度优先的爬虫程序,Repetitive爬虫程序,