MinerHtmlThread.java 爬取页面线程

MinerHtmlThread.java 爬取页面线程

package com.iteye.injavawetrust.miner;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 * 爬取页面线程
 * @author InJavaWetrust
 *
 */
public class MinerHtmlThread extends Thread {
	
	private static final Log LOG = LogFactory.getLog(MinerHtmlThread.class);
	
	private MinerConfig config = null;
	
	public MinerHtmlThread(MinerConfig config) {
		this.config = config;
	}
	
	@Override
	public void run() {
		while (!MinerMonitorThread.done) {
			minerHtml();
		}
	}
	
	public synchronized void minerHtml() {
		MinerUrl minerUrl = MinerQueue.unVisitedPoll(); // 待访问出队列。
		try {
			//判断当前页面爬取深度
			if(null == minerUrl || MinerUtil.isBlank(minerUrl.getUrl()) || minerUrl.getDepth() > config.getMaxDepth()) {
				return;
			}
			//判断爬取页面URL是否包含http
			if("http".contains(minerUrl.getUrl())) {
				LOG.info("MinerHtmlThread当前爬取URL[" + minerUrl.getUrl() + "]没有http");
				return;
			}
			LOG.info("MinerHtmlThread当前爬取页面[" + minerUrl.getUrl() + "]爬取深度[" + minerUrl.getDepth() + "] 当前线程 [" + Thread.currentThread().getName() + "]");
			Connection conn = Jsoup.connect(minerUrl.getUrl());
			conn.header("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13");//配置模拟浏览器  
			Document doc = conn.get();
			String page = doc.html();
			Html html = new Html();
			html.setUrl(minerUrl.getUrl());
			html.setHtml(page);
			html.setDepth(minerUrl.getDepth());
			
			// 添加到存储队列
			MinerQueue.addStore(html);
			
			// 已经爬取的页面 添加到等待提取URL的分析页面队列
			MinerQueue.addWaitingMisering(html); 
			
		} catch(Exception e) {
			LOG.info("MinerHtmlThread爬取页面失败 URL [" + minerUrl.getUrl() + "]");
			LOG.info("MinerHtmlThreadError info [" + e.getMessage() + "]");
		}
		
	}

}

 

返回列表

 

【ARXML专题】-2-创建一个Classic CAN(经典CAN2.0)/CANFD的系统描述ARXML文件 目录 1 创建一个AUTOSAR系统描述 2 物理层命名以及创建ECU 3 新建一个Frame 4 新建一个PDU 5 新建一个signal 6 结尾 AUTOSAR System Description Network Explorer是一个文件编辑器,支持可视化和编辑系统描述的AUTOSAR系统描述文件和ECU摘录的通信内容,它支持架构版本4.0.3、4.1.2、4.2.1、4.2.2和4.3.0。AUTOSAR系统描述(ARXML)文件是基于XML的文件格式,描述网络通信的元素... 阅读详情

相关推荐

FreeCAD地下管道自动化建模实战:Python脚本从入门到导出OBJ

本文详细介绍了如何利用FreeCAD的Python API实现地下管道的自动化建模,从数据处理到模型导出OBJ格式的全流程。通过实战案例和代码示例,展示了圆形和矩形截面管道的创建方法,以及法兰连接等特殊处理技巧,大幅提升工程设计效率。

ff678的博客 250

网络爬虫:使用多线程爬取网页链接

前言: 经过前面两篇文章,你想大家应该已经知道网络爬虫是怎么一回事了。这篇文章会在之前做过的事情上做一些改进,以及说明之前的做法的不足之处。 思路分析: 1.逻辑结构图 上图中展示的就是我们网络爬虫中的整个逻辑思路(调用Python解析URL,这里只作了简略的展示)。 2.思路说明: 首先,我们来把之前思路梳理一下。之前我们采用的两个队列Qu...

weixin_30698297的博客 551

基于迁移学习的花卉识别系统

本研究采用了预训练的经典深度学习模型,包括ResNet、AlexNet和VGG,通过微调的方式在Oxford-102数据集和一个自制花卉数据集上进行训练,并对图像进行了多种数据增强操作,以提高模型的泛化能力,致力于实现花卉的高效分类。

m0_71146337的博客 2379

用Java程序爬取网页地址,电话

1.test.java import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.HashMap; imp...

布鲁斯能上天的博客 1495

手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程

本文详细介绍了在Android 14中调试ShellTransitions机制的方法,重点通过Log追踪ActiveTransition与Handler的匹配过程。文章提供了关键日志点植入策略、Handler匹配机制解析及实战调试案例,帮助开发者解决窗口转场动画中的卡顿和错乱问题,提升系统动画性能。

weixin_42652674的博客 431

西门子S7-1200 PLC与伺服电机控制实战解析

工业自动化控制系统中,PLC(可编程逻辑控制器)与伺服电机的协同工作是实现精密运动控制的核心技术。通过PROFINET工业以太网协议,PLC可以高效地控制多台伺服电机,实现定位、同步和插补等复杂运动。在实际工程应用中,硬件组态的正确配置和运动控制算法的优化是关键挑战。本文以西门子S7-1200 PLC控制五台伺服电机的项目为例,详细介绍了从硬件组态、运动控制程序实现到HMI界面设计的全流程。特别针对多轴同步插补运动、动态速度曲线调整等特殊工艺需求,提供了实用的解决方案和调试技巧,为工业自动化领域的工程师提供

weixin_30252709的博客 497

Java实现多线程爬虫

项目介绍 该项目是《网络程序设计》老师布置的一个作业,让完成: 给定一个网址,获取该网站中所有的图片(重要的,图标哪些就不算了),实现多线程下载,自动爬取。 我做的项目爬取的是孔夫子二手书官网的计算机类的所有书籍的图片:http://item.kongfz.com/Cjisuanji/ 知识储备 jsoup的使用 java线程池的使用 URL类、URLConnection类及流的处理 开...

淮左青衣 4862

(十)安卓开发中的Activity之间的通信使用详解

下面将结合代码和具体在 Android 开发中,Activity 之间的通信是非常常见且核心的功能之一使用场景,详细讲解这几种方式。

cuijiying的博客 1281

java jsoup 多线程爬虫Miner

java jsoup多线程爬虫Miner 需要配置项: 1、URL包含关键字。 2、存储方式:DB-数据库存储;FILE-文件存储。 3、爬取页面最大深度。 4、下载页面线程数。 5、分析页面线程数。 6、存储线程数。 ------------------------------------------- 程序中用到的表: CREATE TABLE `miner` ( ...

18万+

获取B站某用户更多的关注数和粉丝数

获取B站某用户更多的关注数和粉丝数 相关记录 一、 前言 B 站最多只能翻 5 页用户的关注数和粉丝数,如何能够看到更多呢。 方法我也是从网上翻来的,记载博客里,算是我研究过这个话题了。 二、需要的东西 关注数的 api https://api.bilibili.com/x/relation/followings?vmid=2884629&pn=1&ps=20&order=desc&jsonp=jsonp 关注者(粉丝)的 api https://api.bilibili.

Enderman_xiaohei的博客 4825

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3194

MiseringThread.java 解析页面线程

MiseringThread.java 解析页面线程 http://injavawetrust.iteye.com package com.iteye.injavawetrust.miner; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.Log...

16万+

自然语言处理6 -- 情感分析

1 概述 情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。 情感分析可以采用基于情感词典的传统方法,也可以采用基于深度学习的方法,下面详细讲解 ...

谢杨易的博客 5万+

StoreType.java 存储方式

StoreType.java 存储方式 package com.iteye.injavawetrust.miner; /** * 存储方式 * @author InJavaWeTrust * */ public enum StoreType { /** * DB-数据库存储 */ DB("DB"), /** * FILE-文件存储 */ FILE("FILE...

15万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MinerMonitorThread.java 监控线程

MinerMonitorThread.java 监控线程 package com.iteye.injavawetrust.miner; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 监控线程 * @author Administrator * */...

14万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MinerStoreThread.java 存储线程

MinerStoreThread.java 存储线程 package com.iteye.injavawetrust.miner; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactor...

14万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MinerUtil.java 爬虫工具类

MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.Ou...

14万+

MinerThreadPool.java 线程池

MinerThreadPool.java 线程池 package com.iteye.injavawetrust.miner; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExe...

14万+

MinerQueue.java 访问队列

MinerQueue.java 访问队列 package com.iteye.injavawetrust.miner; import java.util.HashSet; import java.util.LinkedList; import java.util.Queue; import java.util.Set; import org.apache.commons.logging.L...

14万+

MinerUrl.java 解析页面后存储URL类

MinerUrl.java 解析页面后存储URL类 package com.iteye.injavawetrust.miner; /** * 解析页面后存储URL类 * @author InJavaWeTrust * */ public class MinerUrl { /** * 当前爬取URL */ private String url; /** * 当前爬取UR...

14万+

Html.java 存储页面信息类

Html.java 存储页面信息类 package com.iteye.injavawetrust.miner; /** * 存储页面信息类 * @author InJavaWeTrust * */ public class Html { /** * 页面URL */ private String url; /** * 页面信息 */ private St...

14万+

Miner.java 爬虫启动类

Miner.java 爬虫启动类 package com.iteye.injavawetrust.miner; import java.util.concurrent.ThreadPoolExecutor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** *...

14万+

MinerConstanits.java 常量类

MinerConstanits.java 常量类 package com.iteye.injavawetrust.miner; /** * 常量类 * @author InJavaWeTrust * */ public class MinerConstanits { /** * 存储目录 */ public static String HTMLPATH = "E:\\I...

14万+

MinerBean.java 数据库表 miner bean

MinerBean.java 数据库表 miner bean package com.iteye.injavawetrust.miner; import java.util.Date; /** * 数据库表 miner bean * @author InJavaWeTrust * */ public class MinerBean { /** * uuid */ pri...

14万+
上一篇: MinerDB.java 数据库工具类
下一篇: MinerMonitorThread.java 监控线程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值