多线程爬虫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 存储方式

多线程爬虫Miner的更多相关文章

  1. python多线程爬虫设计及实现示例

    爬虫的基本步骤分为:获取,解析,存储.假设这里获取和存储为io密集型(访问网络和数据存储),解析为cpu密集型.那么在设计多线程爬虫时主要有两种方案:第一种方案是一个线程完成三个步骤,然后运行多个线程 ...

  2. Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)

    1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...

  3. python爬虫入门(四)利用多线程爬虫

    多线程爬虫 先回顾前面学过的一些知识 1.一个cpu一次只能执行一个任务,多个cpu同时可以执行多个任务2.一个cpu一次只能执行一个进程,其它进程处于非运行状态3.进程里包含的执行单元叫线程,一个进 ...

  4. [原创]一款小巧、灵活的Java多线程爬虫框架(AiPa)

    1.简介 AiPa 是一款小巧,灵活,扩展性高的多线程爬虫框架. AiPa 依赖当下最简单的HTML解析器Jsoup. AiPa 只需要使用者提供网址集合,即可在多线程下自动爬取,并对一些异常进行处理 ...

  5. python多线程爬虫+批量下载斗图啦图片项目(关注、持续更新)

    python多线程爬虫项目() 爬取目标:斗图啦(起始url:http://www.doutula.com/photo/list/?page=1) 爬取内容:斗图啦全网图片 使用工具:requests ...

  6. 抓包分析、多线程爬虫及xpath学习

    1.抓包分析 1.1 Fiddler安装及基本操作 由于很多网站采用的是HTTPS协议,而fiddler默认不支持HTTPS,先通过设置使fiddler能抓取HTTPS网站,过程可参考(https:/ ...

  7. 【Python爬虫实战】多线程爬虫---糗事百科段子爬取

    多线程爬虫:即程序中的某些程序段并行执行,合理地设置多线程,可以让爬虫效率更高糗事百科段子普通爬虫和多线程爬虫分析该网址链接得出:https://www.qiushibaike.com/8hr/pag ...

  8. Python爬虫开发【第1篇】【多线程爬虫及案例】

    糗事百科爬虫实例: 地址:http://www.qiushibaike.com/8hr/page/1 需求: 使用requests获取页面信息,用XPath / re 做数据提取 获取每个帖子里的用户 ...

  9. 【python3两小时快速入门】入门笔记03:简单爬虫+多线程爬虫

    作用,之间将目标网页保存金本地 1.爬虫代码修改自网络,目前运行平稳,博主需要的是精准爬取,数据量并不大,暂未加多线程. 2.分割策略是通过查询条件进行分类,循环启动多条线程. 1.单线程简单爬虫(第 ...

随机推荐

  1. 数据结构之并查集Union-Find Sets

    1.  概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题. 2.  基本操作 并查集 ...

  2. 561. Array Partition I

    Given an array of 2n integers, your task is to group these integers into n pairs of integer, say \(( ...

  3. Lucene——Field.Store(存储域选项)及Field.Index(索引选项)

    Field.Store.YES或者NO(存储域选项) 设置为YES表示或把这个域中的内容完全存储到文件中,方便进行文本的还原 设置为NO表示把这个域的内容不存储到文件中,但是可以被索引,此时内容无法完 ...

  4. Android开发技巧——使用Drawable实现小红点

    在产品的设计中,总难免需要我们开发去实现各种各样的小红点,小红点,小红点. 通常,我们可能会这样做: 用一个View实现小红点,放在相对布局里,设置好内边距或外边距,让它位于图片的右上角. 或者是给图 ...

  5. Most Common Solutions to FRM-41839 and .tmp Files Not Being Deleted

    In this Document   Symptoms   Changes   Cause   Solution   References APPLIES TO: Oracle Application ...

  6. High Executions Of Statement "delete from smon_scn_time..."

    In this Document   Symptoms   Cause   Solution APPLIES TO: Oracle Database - Enterprise Edition - Ve ...

  7. Android6.0 init 深入分析

    之前写过一篇关于android5.0 init的介绍,这篇博客是介绍android6.0init,之前有的代码介绍不详细.而且分析 解析init.rc那块代码也没有结合init.rc介绍. 一. ma ...

  8. django-redis

    linuxapt-get install redis-serverpip install django-redis vim /etc/redis/redis.conf maxmemory 20mb s ...

  9. CSDN 支持Markdown写文章了!

    开源中国等其他技术博客很早就支持markdown格式写文章了,今天发现csdn竟然也可以了,不仅支持而且可以在线预览,本地导入导出,远程导入. 这些对于程序员写东西都非常好用,不用总是花时间来排版了. ...

  10. Java并发框架——什么是AQS框架

    什么是AQS框架 1995年sun公司发布了第一个java语言版本,可以说从jdk1.1到jdk1.4期间java的使用主要是在移动应用和中小型企业应用中,在此类领域中基本不用设计大型并发场景,当然也 ...