【问题标题】:Getting all the domains a page depends on using Nokogiri获取页面的所有域取决于使用 Nokogiri
【发布时间】:2011-07-29 13:43:15
【问题描述】:

我正在尝试使用 Nokogiri 获取特定页面所依赖的所有域/IP 地址。由于 Javascript 动态加载依赖项,它并不完美,但我很高兴尽最大努力获得:

  • 图片网址
  • Javascript URL
  • 框架和 IFrame

我还想关注任何 CSS 导入。

任何建议/帮助将不胜感激。该项目已经在使用 Anemone。

这是我目前拥有的。

Anemone.crawl(site, :depth_limit => 1) do |anemone|
  anemone.on_every_page do |page|
    page.doc.xpath('//img').each do |link|
      process_dependency(page, link[:src])
    end
    page.doc.xpath('//script').each do |link|
      process_dependency(page, link[:src])
    end
    page.doc.xpath('//link').each do |link|
      process_dependency(page, link[:href])
    end
    puts page.url
  end
end

代码会很棒,但我真的只是在寻找指针,例如我现在发现我应该使用像 css_parser 这样的 CSS 解析器来解析任何 CSS 以查找图像的导入和 URL。

【问题讨论】:

  • 你能告诉我们你已经尝试过什么吗?
  • 不需要 CSS 解析器。 URI::extract 应该在 CDATA 中找到 URI。

标签: ruby nokogiri anemone


【解决方案1】:

获取页面的内容,然后你可以从页面中提取一个URI数组

require 'uri'    
URI.extract(page)

之后只需要使用正则表达式解析每个链接并提取域名即可。

【讨论】:

  • 这是我会使用的,直到我发现它还不够。然后我会使用 Nokogiri 来追踪单个标签,并使用 extract 来追踪 CDATA 字符串中的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2019-02-24
相关资源
最近更新 更多