2012-10-23 3 views
0

페이스 북에서 아바타의 src 속성을 가져와야합니다. Nokogiri 이미지 찾기 src

doc = Nokogiri::HTML(open('http://www.facebook.com/zuck')) 

그때 나는 시도 :

avatar = doc.css('.photoContainer img') 

그러나 빈 결과를 받았다. img src를 얻으려면 어떻게해야합니까? 왜 내 방법이 효과가 없었습니까?

는 또한 XPath는 모든 imgs을 찾기 위해 노력하지만, 여전히 빈 결과를받은 :

Nokogiri::HTML(open('http://www.facebook.com/zuck')).xpath("//img/@src").each do |src| 
    puts src             
end 

답변

1

문제는 당신이 액세스하려는 .photoContainer DIV 페이지의 실제 HTML에없는 것입니다 , Nokogiri가 그것을 볼 수 없도록 JavaScript를 통해 DOM에 삽입됩니다. Nokogiri는 정적 HTML과 XML 만 구문 분석 할 수 있습니다.

JavaScript로 생성 된 DOM 콘텐츠에 액세스하려는 경우 watir 또는 selenium과 같은 자동화 된 웹 탐색 도구를 사용해 볼 수 있습니다. ""도 참조하십시오.

UPDATE :

당신은 통합 테스트, 당신은 직접 사용하기 조금 까다로울 수있다 셀레늄과 같은 검색 도구의 래퍼로의 선택기를 사용할 수 있습니다 capybara를 사용에 익숙하다면

.

그래서, 예를 들어, 콘솔 :

visit('http://www.facebook.com/zuck') 
find('a.layerCancel').click 
find('.photoContainer img')['src'] 
#=> "http://profile.ak.fbcdn.net/hprofile-ak-ash3/c23.1.285.285/s160x160/73273_773684942011_2125564_n.jpg" 
:

require 'capybara' 
require 'capybara/dsl' 

include Capybara::DSL 
Capybara.default_driver = :selenium 

그런 다음 먼저 CSS를 통해 요소를 액세스 한 다음 팝업을 폐쇄,에 의해, 요소를 얻을 수 있습니다