web-scraping - Nutch - 克隆网站

标签 web-scraping web-crawler nutch

我正在玩 Apache Nutch,并且成功地抓取了一个网站。我想用 Nutch 克隆一个网站,这样我就可以离线访问爬取的网页。有没有办法做到这一点?我正在寻找类似接收 url 并返回网页内容的端点,就好像我正在使用 curl 获取 url 一样。

我知道有更专业的解决方案,例如 HTTrack ,但我想知道是否可以使用 Nutch 来执行此操作。

最佳答案

我认为您现在不需要这个,但无论如何我都会回答。当然可以使用 Apache Nutch。在注入(inject)种子 url 并生成要获取的 url 段之后,当您执行获取命令时 -

$ bin/nutch fetch -all

Hbase(Nutch用Hbase做存储很常规)webpage表结构会是这样-

webpage : {
  key : "com.exampe.dev:http/",
  f : {
    bas : {
      timestamp : 1293732801833, 
      value : "http://dev.example.com/" 
    },
    cnt : {
      timestamp : 1293732801833, 
      value : "DOCTYPE html PUBLIC "-//W3C//DTD X...rest of page content" 
    },
    fi : {
      timestamp : 1293676557658,
      value : "\x00'\x8D\x00" 
    },
    prot : {
      timestamp : 1293732801833, 
      value : "x02\x00\x00" 
    },
    st : {
      timestamp : 1293732801833, 
      value : "x00\x00\x00\x02" 
    },
    ts : {
      timestamp : 1293676557658,
      value : "\x00\x00\x01-5!\x9D\xE5" 
    }
    typ : {
      timestamp : 1293732801833, 
      value : "application/xhtml+xml" 
    }
  },
  h : {
    Cache-Control : {
      timestamp : 1293732801833, 
      value : "private" 
    },
    Content-Type : {
      timestamp : 1293732801833, 
      value : "text/html; charset=UTF-8" 
    },
    Date : {
      timestamp : 1293732801833, 
      value : "Thu, 30 Dec 2010 18:13:21 GMT" 
    },
    ETag : {
      timestamp : 1293732801833, 
      value : 40bdf8b9-8c0a-477e-9ee4-b19995601dde" 
    },
    Expires : {
      timestamp : 1293732801833, 
      value : "Thu, 30 Dec 2010 18:13:21 GMT" 
    },
    Last-Modified : {
      timestamp : 1293732801833, 
      value : "Thu, 30 Dec 2010 15:01:20 GMT" 
    },
    Server : {
      timestamp : 1293732801833, 
      value : "GSE" 
    },
    Set-Cookie : {
      timestamp : 1293732801833, 
      value : "blogger_TID=130c0c57a66d0704;HttpOnly" 
    },
    X-Content-Type-Options : {
      timestamp : 1293732801833, 
      value : "nosniff" 
    },
    X-XSS-Protection : {
      timestamp : 1293732801833, 
      value : "1; mode=block" 
    }
  },
  mk : {
    _injmrk_ : {
      timestamp : 1293676557658, 
      value : "y" 
    },
    _gnmrk_ : {
      timestamp=1293732629430, 
      value : "1293732622-2092819984" 
    },
    _ftcmrk_ : {
      timestamp : 1293732801833, 
      value : "1293732622-2092819984" 
    }
  },
  mtdt : {
    _csh_ : {
      timestamp : 1293676557658, 
      value : "x80\x00\x00" 
    }
  },
  s : {
    s : {
      timestamp : 1293676557658, 
      value : "x80\x00\x00" 
    }
  }
}

f 列族下名为cnt 的列将包含页面的全部 html 内容。因此,您显然可以使用它来克隆页面。

此外,您可以编写实现ParserParseFilter 接口(interface)的自定义插件来捕获页面的全部内容。代码将非常简单。

关于web-scraping - Nutch - 克隆网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33354460/

相关文章:

java - SolrIndexerJob : runtime error

python - 关注 Mechanize 的链接

JavaScript Node.js 网页抓取 : How do I find specific elements on webpage table to scrape and push into an array of objects?

python - 在 Linux 服务器上使用 Selenium 运行 Scrapy Web Crawler

nutch - nutch 1.3 中重新抓取 URL

java - 用于抓取的 Nutch 正则表达式

python - 使用 requests.post() 从网页中抓取文本

python - 从Python中的BeautifulSoup对象中提取纬度/经度

web-crawler - 从网站获取图片

python-3.x - 如何在Scrapy CrawlSpider中找到当前的start_url?