使所有域名成为页面取决于使用Nokogiri

时间:2011-07-29 13:43:15

标签: ruby nokogiri anemone

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

  • 图片网址< img src =“...”
  • Javascript网址< script src =“...”
  • CSS和任何CSS 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。

1 个答案:

答案 0 :(得分:1)

获取页面内容,然后您可以使用

从页面中提取URI数组
require 'uri'    
URI.extract(page)

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