网页快照乱码问题修正。修改页面tcached.jsp,将content = new String(bean.getContent(details))修改为content = new String(bean.getContent(details),"utf-8")。
还有就是tomcat 6以上版本 jsp中不能有" " "号,要以" ' "取代
protocal:
每一次返回的是插件里面的protocal,
FetcherThread->protocolFactory->extention->instance.
parserFactory.getParsers()可以修改自定义插件,据说有个什么鸟carrot2插件,有空看看!
crawl没有使用线程池,一个鸟threadpool让我找了好久shit!java已经不再推荐自己编写线程池,反正nutch也没有使用,n自己在fetch的时候自己创建了一驼线程,每个从fetcher 的input里面读取一个键值作为爬行地址。
调用injector比较简单,先生产datum,然后输出到文件夹,然后generator调用selector.class来进行map,这里面selector可以加以修改添加插件或者url列表之类,不过太tmd侵入式了。
如果是不存在的链接,直接喀嚓然后output.collect(sortValue, entry);其中entry包含了crawlDatum和url,这两个鸟东西居然分开存放,
在generator中partitioner为hostPartitioner.getPartition(((SelectorEntry)value).url, key,numReduceTasks);这个比较重要
selector主要有两种选择方式byip不byip
if (byIP) {
try {
InetAddress ia = InetAddress.getByName(host);
host = ia.getHostAddress();
} catch (UnknownHostException uhe) {
if (LOG.isDebugEnabled()) {
LOG.debug("DNS lookup failed: " + host + ", skipping.");
}
dnsFailure++;
if ((dnsFailure % 1000 == 0) && (LOG.isWarnEnabled())) {
LOG.warn("DNS failures: " + dnsFailure);
}
continue;
}
}
下面是关键
u = new URL(u.getProtocol(), host, u.getPort(), u.getFile());
String urlString = u.toString();
try {
urlString = normalizers.normalize(urlString, URLNormalizers.SCOPE_GENERATE_HOST_COUNT);
host = new URL(urlString).getHost();
} catch (Exception e) {
LOG.warn("Malformed URL: '" + urlString + "', skipping (" +
StringUtils.stringifyException(e) + ")");
continue;
}
IntWritable hostCount = (IntWritable)hostCounts.get(host);
if (hostCount == null) {
hostCount = new IntWritable();
hostCounts.put(host, hostCount);
}
// increment hostCount
hostCount.set(hostCount.get() + 1);
// skip URL if above the limit per host.
if (hostCount.get() > maxPerHost) {
if (hostCount.get() == maxPerHost + 1) {
if (LOG.isInfoEnabled()) {
LOG.info("Host " + host + " has more than " + maxPerHost +
" URLs." + " Skipping additional.");
}
}
continue;
}
}
接下來,調用inversemapper,将url与datum分别写入一个segment.
然后调用crawlDbUpdater output.collect(key, orig(datum));
后面两个job的输入都是第一个job的输出,这里面不涉及算法,纯顺序执行没有什么技术含量
分享到:
相关推荐
docker笔记笔记笔记笔记笔记笔记
ES6笔记笔记笔记笔记笔记
自己的编程学习笔记笔记
2020谷粒商城笔记资料,谷粒商城2020文档课件笔记+源代码(基础篇+高级篇) 谷粒商城2020文档课件笔记+源代码(基础篇+高级篇) 2020谷粒商城笔记资料(基础篇+高级篇) 尚硅谷谷粒商城笔记,很全。基础篇,高级篇...
笔记
笔记
印象笔记共享笔记本图文教程 印象笔记是一款功能强大且好用的笔记软件,允许用户创建、组织和分享笔记。很多用户都想知道如何共享笔记本,以便与他人共同编辑和查看笔记。在这里,我们将详细介绍印象笔记共享笔记本...
day2 java笔记
很高兴能够来到哈工大读书,到了大学我依旧保持对学习的热爱与认真的态度,每一门课...这份笔记笔记反映了对老师的尊重也是对自己的负责。如果屏幕前的您也在学习概率论,不妨看看我的笔记,相信你一定会有很多收获的!
笔记笔记
笔记cmake笔记 cmake 笔记cmake笔记 cmake 笔记笔记cmake笔记 cmake 笔记cmake笔记 cmake 笔记笔记cmake笔记 cmake 笔记cmake笔记 cmake 笔记
笔记记录分享-笔记记录分享网站-笔记记录分享网站源码-笔记记录分享网站java代码-笔记记录分享网站设计与实现-基于springboot的笔记记录分享网站-基于Web的笔记记录分享网站设计与实现-笔记记录分享项目-笔记记录...
微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小程序 云笔记 (源码)微信小...
狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神SpringBoot笔记+源码 狂神...
陈文灯数学笔记 陈文灯数学笔记陈文灯数学笔记陈文灯数学笔记陈文灯数学笔记
新概念第一册笔记新概念第一新新概念第一册笔记概念第一册笔记册笔记新概念第一新概念第一册笔记册新概念第一册笔记笔记
小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+截图)小程序源码 云笔记 (代码+...
高手笔记 软件开发软件使用笔记 本资源是关于高手笔记 软件开发软件使用笔记的知识点总结。主要讲解了如何构建带内存错误检查的 gcc,以及 QEMU 的使用笔记。 一、构建带内存错误检查的 gcc 高手笔记软件开发软件...
deeplearning深度学习笔记笔记!
oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记...