3

我正在寻找一种方法来查找域中的所有网页和子域。例如,在 uoregon.edu 域中,我想查找该域和所有子域中的所有网页(例如,cs.uoregon.edu)。

我一直在看nutch,我认为它可以完成这项工作。但是,nutch 似乎会下载整个网页并将其编入索引以供以后搜索。但是,我想要一个只扫描网页以查找属于同一域的 URL 的爬虫。此外,nutch 似乎以序列化格式保存链接数据库。我该如何阅读它?我试过solr,它可以读取nutch收集的数据。但是,我认为我不需要 solr,因为我没有执行任何搜索。我只需要属于给定域的 URL。

谢谢

4

2 回答 2

4

如果您熟悉红宝石,请考虑使用海葵。奇妙的爬行框架。这是开箱即用的示例代码。

require 'anemone'

urls = []

Anemone.crawl(site_url)
  anemone.on_every_page do |page|
    urls << page.url
  end
end

https://github.com/chriskite/anemone

免责声明:您需要使用问题中的补丁来抓取子域,并且您可能需要考虑添加最大页数。

于 2012-04-22T23:08:58.057 回答
0

查找给定域的所有子域的最简单方法是要求相关站点的 DNS 管理员为您提供DNS 区域传输或其区域文件;如果该区域中有任何通配符 DNS 条目,您还必须获取响应通配符 DNS 条目请求的服务器的配置(可能还有代码)。不要忘记,域名空间的一部分可能由其他 DNS 服务器处理——您必须从它们全部获取数据。

这尤其复杂,因为 HTTP 服务器可能对烘焙到其服务器配置文件中的不同名称的请求有不同的处理,或者运行服务器的应用程序代码,或者运行服务器的应用程序代码可能会执行数据库查找以确定如何处理给定的名称。FTP 不提供基于名称的虚拟主机,您感兴趣的任何其他服务可能会或可能不会提供基于名称的虚拟主机协议。

于 2012-04-22T23:12:55.030 回答