2016-06-08 4 views
0
b = Watir::Browser.new :firefox 
url_input = "www.url.com" 
b.goto url_input 
b.driver.manage.timeouts.implicit_wait = 100 

h3s = b.h3s class:"class-name" 

for h3 in h3s 
    h3.wait_until_present 

    as = h3.as 

    for a in as 
     # puts a.text 
     name = h3.text 
     puts name 
    end 
end 

코드는 때때로 모든 h3 태그의 예상 이름을 인쇄하지만 때로는 터미널에서 프로그램을 실행해도 결국에는 아무 것도 인쇄하지 않습니다.Watir 웹 스크레이퍼가 때때로 작동하지 않는 경우 가끔

"/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/protocol.rb:158:in`rbuf_fill ': 이런 식으로 시작하는 오류가 순 : : ReadTimeout (Net :: ReadTimeout) "을 참조하십시오.

또한 a.text를 인쇄하려고 할 때 또는 url = a.attribute_value('href')을 수행하여 태그의 URL을 가져 와서 인쇄하려고 시도하면 작동하지 않습니다. 그것이 때때로 달리고 때로는 그렇지 않다는 것이 저에게는 이상하게 보입니다. 타이밍과 관련이 있다고 생각하지만 Watir의 타이밍이 전혀 작동하지 않는지 이해할 수 없습니다.

답변

0

그래서 타이밍 문제였습니다. 결국 나는 다음과 같이 작업 할 수있게되었습니다.

for a in as 
    a.wait_until_present 
    if a.when_present 
     name = a.text 
     url = a.attribute_value('href') 
    end 
end 

가끔은 효과가 있었지만 때로는 그렇지 않았습니다. 임의의 위치에서 데이터를 파싱하는 중 몇 번 멈췄습니다. 한숨, 결국 나는 필요한 데이터를 얻었습니다.