多线程爬虫Miner
需要配置项:
1、URL包含关键字。
2、存储方式:DB-数据库存储;FILE-文件存储。
3、爬取页面最大深度。
4、下载页面线程数。
5、分析页面线程数。
6、存储线程数。
-------------------------------------------
程序中用到的表:
CREATE TABLE `miner` ( `id` varchar(32) NOT NULL, `batchNo` varchar(8) DEFAULT NULL, `filePath` varchar(255) DEFAULT NULL, `fileName` varchar(255) DEFAULT NULL, `getDate` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-------------------------------------------
程序中用到的maven依赖
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.8.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.15</version> <scope>provided</scope> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency>
测试类:
package com.iteye.injavawetrust.miner; import java.util.ArrayList; import java.util.List; /** * 测试类 * @author InJavaWeTrust * */ public class MinerTest { public static void main(String[] args) { MinerConfig config = new MinerConfig(); // 1、URL包含关键字。 List<String> keys = new ArrayList<String>(); keys.add("163"); config.setKeys(keys); // 2、存储方式:DB-数据库存储;FILE-文件存储。 config.setStoreType(StoreType.DB); // 3、爬取页面最大深度。 config.setMaxDepth(2); // 4、下载页面线程数。 config.setMinerHtmlThreadNum(5); // 5、分析页面线程数。 config.setMiseringThreadNum(3); // 6、存储线程数。 config.setMinserStoreThreadNum(3); // 7、设置爬取起始页面URL。 MinerUrl minerUrl = new MinerUrl(); minerUrl.setUrl("http://www.163.com"); minerUrl.setDepth(1); Miner miner = new Miner(minerUrl, config); miner.start(); } }
爬虫 MINER 程序列表:
Html.java 存储页面信息类
Miner.java 爬虫启动类
MinerBean.java 数据库表 miner bean
MinerConfig.java 爬取配置类
MinerConstanits.java 常量类
MinerDB.java 数据库工具类
MinerHtmlThread.java 爬取页面线程
MinerMonitorThread.java 监控线程
MinerQueue.java 访问队列
MinerStoreThread.java 存储线程
MinerThreadPool.java 线程池
MinerUrl.java 解析页面后存储URL类
MinerUtil.java 爬虫工具类
MiseringThread.java 解析页面线程
StoreType.java 存储方式