2011-07-29 163 views
2

我试图让所有的域名/ IP地址,特定页面依赖于使用Nokogiri。它不可能是完美的,因为使用Javascript动态加载的依赖,但我很高兴与尽力在得到:获取所有域的一个页面取决于使用Nokogiri

  • 图像URL < IMG SRC =“...”
  • JavaScript网址< SCRIPT SRC = “......”
  • CSS和任何CSS的url(...)元素
  • frame和iframe

我还希望遵循任何CSS进口。

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

这就是我目前所拥有的。

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

你能告诉我们你已经试过了吗? –

+1

CSS解析器不应该是必需的。 'URI :: extract'应该在CDATA中找到URI。 –

回答

1

获取页面的内容,那么你可以从页面

require 'uri'  
URI.extract(page) 

提取URI的阵列之后,它只是一个使用正则表达式来解析每一个环节,并提取域名的事项。

+1

这是我会使用,直到我看到它是不够的。然后,我会使用Nokogiri去追踪单个标签,并使用'extract'来追踪'CDATA'字符串中的任何内容。 –