2019独角兽企业重金招聘Python工程师标准>>>

修改LinkDb.java的map方法,对页面取到的outlink进行解析
import com.sun.org.apache.xml.internal.utils.URI.MalformedURIException;
import com.sun.org.apache.xml.internal.utils.URI;

Inlinks inlinks = new Inlinks();
    URI baseUri = new URI(fromUrl);
    URI absoluteUri = null;

    for (int i = 0; i < outlinks.length; i++) {
      Outlink outlink = outlinks[i];
      String toUrl = outlink.getToUrl();
      if (ignoreInternalLinks) {
        String toHost = getHost(toUrl);
        if (toHost == null || toHost.equals(fromHost)) { // internal link
          continue;                               // skip it
        }
      }
      if (urlNormalizers != null) {
        try {
          toUrl = urlNormalizers.normalize(toUrl, URLNormalizers.SCOPE_LINKDB); // normalize the url
        } catch (Exception e) {
          LOG.warn("Skipping " + toUrl + ":" + e);
          toUrl = null;
        }
      }
      if (toUrl != null && urlFilters != null) {
        try {
          toUrl = urlFilters.filter(toUrl); // filter the url
        } catch (Exception e) {
          LOG.warn("Skipping " + toUrl + ":" + e);
          toUrl = null;
        }
      }
      if (toUrl == null) continue;
      inlinks.clear();
      String anchor = outlink.getAnchor();        // truncate long anchors
      if (anchor.length() > maxAnchorLength) {
        anchor = anchor.substring(0, maxAnchorLength);
      }
      inlinks.add(new Inlink(fromUrl, anchor));   // collect inverted link
      try {
          absoluteUri = new URI(baseUri, toUrl);
      } catch (MalformedURIException e) {
          continue;
      }

    
//      output.collect(new Text(toUrl), inlinks);
      output.collect(new Text(absoluteUri.toString()), inlinks);
    }

还有一种方法

import java.net.*;  
import java.io.*;  
public class Test{  
public static void main(String args[]) throws Exception {  
  String abURL=null;    
 URI base=new URI("http://www.pep.com.cn/xe/jszx/tbjxzy/pepxe/pepsa/dzkb/200703/t20070308_303223.htm");//基本网页URI     
  URI abs=base.resolve("../../../pepwa/dzkb/200703/W020070308571116931595.jpg");//解析于上述网页的相对URL,得到绝对URI     
        URL absURL=abs.toURL();//转成URL     
        System.out.println(absURL);    
        abURL = absURL.toString();    
}  
}

转载于:https://my.oschina.net/junfrank/blog/286894

Nutch爬虫解决页面相对路径问题相关推荐

  1. 解决导航栏按钮背景色切换,刷新页面,按钮背景色切换,页面和路径没有切换问题

    解决导航栏按钮背景色切换,刷新页面,按钮背景色切换,页面和路径没有切换问题 上篇博文中 点击导航栏切换背景色 有一个bug,如果点击第二个或者后面几个按钮,再刷新页面,按钮背景色会跳到第一个按钮上去, ...

  2. 网页爬虫之页面解析-BeautifulSoup/XPath/pyquery使用

    网页爬虫之页面解析 内容摘要 Beautiful Soup的使用 节点选择 数据提取 XPath的使用 节点选择 数据提取 pyquery的使用 节点选择 数据提取 Beautiful Soup.XP ...

  3. 基于python爬虫————静态页面和动态页面爬取

    基于python爬虫----静态页面和动态页面爬取 文章目录 基于python爬虫----静态页面和动态页面爬取 1. 爬虫的原理 2. 用正则表达式匹配获取数据 3. 页面源码解析 4. 通过req ...

  4. Nutch爬虫环境搭建

    1 前言 1 2 环境介绍 2 3 准备工作 3 4 Solr安装 8 5 Hbase安装 14 6 Hadoop安装 17 7 Nutch安装 19 8 Solr使用 19 9 Nutch使用 19 ...

  5. nutch爬虫原来是这样操作的!

    一.nutch简介 nutch是大名鼎鼎的Doug Cutting发起的爬虫项目,nutch孵化了现在大数据处理框架Hadoop.在nutch V 0.8.0 版本之前,Hadoop是nutch的一部 ...

  6. 解决页面间体验问题的纯前端容器Lath

    提到前端你最先想到什么?前端工程?web?JavaScript.CSS.HTML? 前端性能现状 如果站在用户的视角那是他们距离信息最近的地方,无论前端在生产技术上如何演变,最终服务于信息表达的根本不 ...

  7. 解决页面换行因标点符号不能出现在每一行的开头,导致提前换行,中间出现空隙的问题

    解决页面换行因标点符号不能出现在每一行的开头,导致提前换行,中间出现空隙的问题 参考文章: (1)解决页面换行因标点符号不能出现在每一行的开头,导致提前换行,中间出现空隙的问题 (2)https:// ...

  8. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题 参考文章: (1)VUE项目中使用this.$forceUpdate();解决 ...

  9. 解决页面使用overflow: scroll在iOS上滑动卡顿的问题

    解决页面使用overflow: scroll在iOS上滑动卡顿的问题 参考文章: (1)解决页面使用overflow: scroll在iOS上滑动卡顿的问题 (2)https://www.cnblog ...

最新文章

  1. 【计算机网络】网络层 : 总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★
  2. 这 8 篇文章告诉你:未来的软件研发是怎样的?
  3. 图片不能置于底层怎么办_PPT中常遇到的图片问题和解决方案
  4. CF628D Magic Numbers (数据大+数位dp)求[a,b]中,偶数位的数字都是d,其余为数字都不是d,且能被m整除的数的个数...
  5. Python中的抽象类和抽象方法
  6. ECharts 常用图表一看即会「散点图」「饼图」「地图」「雷达图」「仪表盘」
  7. 魔力Python--if __name__ == '__main__' 的理解
  8. 从数据库导出数为生成excel表
  9. Root cause be too many concurrent connections error could not open clinet transport with jdbc uri
  10. 使用lambdaquery() 报空指针异常_ARMv8 异常处理简介
  11. 爬取飞猪IP免费代理练习
  12. atmega128 bootloader程序在IAR-AVR下 linker文件的配置及原因
  13. 一款神仙儿 MySQL 审核平台,吊到不行!
  14. 并网光伏发电系统(simulink仿真)
  15. pci转并口卡的安装使用
  16. [Python从零到壹] 五十.图像增强及运算篇之图像直方图理论知识和绘制实现
  17. Unity shader系列:好用的IDE--JetBrain Rider
  18. excel操作模块Openpyxl
  19. 微信小程序自定义picker多列选择器
  20. 哪些方法能减轻打呼噜的症状呢?

热门文章

  1. js弹出对话框的方法总结
  2. .NET Framework 各版本区别
  3. 对软件体系结构的认识
  4. C++ (14) 异常处理
  5. VIM查找替换归纳总结
  6. 怎么还不见2005的中文版出来的?
  7. 旧文 | 舒迅:产品经理必读的九步法
  8. 社区运营破冰也有三大原则八项注意“了,你造吗?
  9. 喂,你连用户模型都不懂还当产品?来,妹纸我手把手教你
  10. BUAA-OO-第三单元总结