2011-07-29 2 views
2

Nokogiri를 사용하여 특정 페이지가 의존하는 모든 도메인/IP 주소를 가져 오려고합니다. 이 때문에 자바 스크립트 동적으로로드 종속성으로 완벽 할 수는 없지만 나는 점점에서 최선의 노력으로 행복 해요 :모든 도메인에 페이지를 가져 오는 방법은 Nokogiri를 사용하는 방법에 따라 다릅니다.

  • 이미지 URL <의 img SRC = "..."
  • 자바 스크립트 URL을 < 스크립트 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 파서를 사용하여 이미지로 가져 오기와 URL을 찾기 위해 CSS를 파싱해야 함을 발견했다. 그것은 각 링크를 구문 분석하고 도메인 이름을 추출하는 정규 표현식을 사용하여 단지 문제 그 후

+1

자신이 이미 시도한 것을 보여줄 수 있습니까? –

+1

CSS 파서가 필요하지 않습니다. 'URI :: extract'는 CDATA에있는 URI를 찾아야합니다. –

답변

1

페이지의 콘텐츠를, 당신은

require 'uri'  
URI.extract(page) 

있는 페이지에서의 URI의 배열을 추출 할 수 있습니다 .

+1

이것은 충분하지 않다는 것을 알기 전까지는 내가 사용하는 것입니다. 그런 다음 Nokogiri를 사용하여 개별 태그를 뒤 따르고 'extract'를 사용하여 'CDATA'문자열의 내용을 처리합니다. –

관련 문제