Получение всех доменов на странице зависит от использования Nokogiri - PullRequest
2 голосов
/ 29 июля 2011

Я пытаюсь получить все домены / IP-адреса, от которых зависит конкретная страница, с помощью Nokogiri. Он не может быть идеальным из-за динамической загрузки зависимостей Javascript, но я рад, что приложил максимум усилий:

  • URL-адреса изображений image
  • Javascript URLs
  • CSS and any CSS url(...) elements
  • Frames and IFrames

I'd also want to follow any CSS imports.

Any suggestions / help would be appreciated. The project is already using Anemone.

Here's what I have at the moment.

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

Code would be great but I'm really just after pointers e.g. I have now discovered that I should use a css parser like css_parser , чтобы проанализировать любой CSS для поиска импорта и URL-адресов изображений.

1 Ответ

1 голос
/ 29 июля 2011

Получить содержимое страницы, затем вы можете извлечь массив URI со страницы с помощью

require 'uri'    
URI.extract(page)

После этого нужно просто использовать регулярное выражение для разбора каждой ссылки и извлечения доменного имени.

...