什么是网络爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
——来源:百度百科
网络爬虫是通过网页的链接地址来寻找网页,它通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,根据深度优先算法或者广度优先算法一直循环下去,直到把这个网站满足条件的所有网页都抓取完为止。
网络爬虫的工作原理
在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,爬虫的基本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。
控制器:控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,从线程池中分配一个线程,然后启动该线程调用爬虫爬取网页的过程。
解析器:解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的内容,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。
资源库:主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。
网络爬虫的流程
图1:网络爬虫的流程
1. 发起请求:向目标URL站点发起HTTP请求报文(请求头,请求体等),等待服务器响应。请求可根据需要来设定是否需要包含额外的请求头或者请求体内容。
2. 获取响应内容:如果服务器能正常响应,此时会得到一个Response,Response的内容即是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
3. 解析内容:解析得到的请求响应内容,然后对数据进行进一步加工处理。对请求响应内容如是HTML,可以用正则表达式、网页解析库进行解析;如是Json,可以直接转为Json对象解析等;如是URL且满足条件则继续发起新的HTTP请求。
4. 保存数据:将解析加工后的数据进行保存处理。可以保存为文本,至数据库,或保存特定格式的文件(图片视频等)。
网络爬虫技术Crawl4J应用
1. 技术介绍
Crawl4J:是一个轻量级且支持多线程网络爬虫技术,开发者可以调用相应的接口和设定响应的参数配置在短时间内创建一个网络爬虫应用。
Jsoup:jsoup 是一款HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JavaScript的操作方法来取出和操作数据。适用于单网页数据抓取或静态HTML内容解析。
因此在项目中我们可以通过网络爬虫Crawl4J技术进行爬取网页内容,然后通过Jsoup技术对响应结果进行解析,并提取满足条件的内容。
2. 项目示例
接下来我们以抓取CSDN博客首页被推荐文章的为例子,定向采集每篇博客的标题,时间,阅读量。
具体实现步骤如下:
Maven依赖Jar包:
<dependency>
<groupId>edu.uci.ics</groupId>
<artifactId>crawler4j</artifactId>
<version>4.3</version>
</dependency>
控制器: