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.LogFactory; /**
* 解析页面线程
* @author InJavaWeTrust
*
*/
public class MiseringThread extends Thread { private static final Log LOG = LogFactory.getLog(MiseringThread.class); private MinerConfig config = null; public MiseringThread(MinerConfig config) {
this.config = config;
} @Override
public void run() {
while (!MinerMonitorThread.done) {
misering();
}
} private synchronized void misering() {
Html html = MinerQueue.waitingMiseringPoll(); // 等待提取URL的分析页面出队列
if (null == html || MinerUtil.isBlank(html.getHtml())) {
return;
}
//当前页面深度<爬取深度 取出当前页面全部URL
if (html.getDepth() < config.getMaxDepth()) {
LOG.info("MiseringThread获取页面[" + html.getUrl() + "]下所有URL。。。。。。 当前线程 [" + Thread.currentThread().getName() + "]");
Set<String> urls = MinerUtil.getAllUrl(html.getUrl());
for(String url : urls){
if(null == url || url.equals("")){
continue;
}
if(url.substring(url.length() - 1, url.length()).equals("/")){
url = url.substring(0, url.length() - 1);
} MinerUrl minerUrl = new MinerUrl();
minerUrl.setUrl(url);
minerUrl.setDepth(html.getDepth() + 1); // 爬取深度+1
// 判断URL列表是否包含关键字
if(!MinerUtil.checkKeys(url, config.getKeys())){
continue;
}
// 添加到待访问队列,每个URL只访问一次
MinerQueue.addUnVisited(minerUrl);
// 将页面URL 添加到URL队列 保证每个URL只访问一次
MinerQueue.addUrlSet(minerUrl.getUrl());
}
}
} }

返回列表

最新文章

  1. 汇编学习(五)&mdash;&mdash;表处理程序
  2. jquery-mobile表单提交问题
  3. java的System.getProperty()方法可以获取的值
  4. (转)内网网站发布到外网-nat123动态公网IP动态域名解析
  5. JavaScrip基础讲座 - 神奇的ProtoType
  6. 监听列表ListVIew的滑动状态
  7. 中控考勤机-C#操作
  8. CI练手下,找找感觉
  9. mysql学习(三)
  10. JVM内存管理 (转)
  11. java字节数组格式化为十六进制字符串
  12. 浅谈MVC缓存
  13. Java 实现 Domino邮箱自动注册
  14. 4层板的pcb创建
  15. Django学习笔记之表单验证
  16. 【Java】 剑指offer(23) 链表中环的入口结点
  17. py库: xlwt 、xlrd (写读EXCEL文件)
  18. 建立SSH的信任关系
  19. python 使用json格式转换
  20. webpack4.0在Mac下的安装配置及踩到的坑

热门文章

  1. 深入理解null的原理
  2. ACM Piggy Bank
  3. 实体类双向映射进行Json序列化时出现无限循环的解决问题
  4. 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )
  5. main函数之后的调用
  6. [Matlab]技巧笔记
  7. Nginx的负载均衡 - 保持会话 (ip_hash)
  8. EBS各个应用简称
  9. iOS集合视图单元格高亮和选中的区别
  10. Java中读取Excel功能实现_POI