【问题标题】:Find all the web pages in a domain and its subdomains查找域及其子域中的所有网页
【发布时间】:2012-05-03 14:45:00
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: url solr web-crawler nutch


【解决方案1】:

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

require 'anemone'

urls = []

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

https://github.com/chriskite/anemone

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

【讨论】:

  • 我试过海葵,至少对于域名来说,它在查找所有内容方面做得很好。我还没有尝试过子域。谢谢。
  • 这里是子域的直接链接:github.com/chriskite/anemone/issues/18 另外,如果它对您有帮助,请考虑将我的帖子标记为答案,以便未来的人们会看到这确实是他们问题的解决方案。跨度>
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-04
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多