2013-07-07 4 views
5

Chrome에서 HTML을보고 Nokogiri를 사용하여 데이터를 가져 와서 사이트를 긁어 내려합니다. 문제는 일부 태그가 동적으로 생성되어 open-uri를 사용할 때 open (url) 요청과 함께 표시되지 않는다는 것입니다. 읽는 오픈 URI와 같은 도구에 대한 콘텐츠를 동적으로 생성하도록 사이트를 "강제 적용"할 수있는 방법이 있습니까?Nokogiri/Open URI로 동적으로 생성 된 HTML

+1

[mechanize] (http://mechanize.rubyforge.org/)를 살펴보십시오. 나는 네가 원하는 것을 할 수도 있다고 생각해. – Aaronneyer

+2

*이 사이트가 콘텐츠를 생성하는 방법 *에 따라 JavaScript를 먼저 실행해야 할 수도 있습니다. – tessi

+0

가끔씩 복잡한 웹 사이트에서 기계화가 진행됩니다. JRuby가 옵션이고 기계화가 작동하지 않는다면 [Celerity] (http://celerity.rubyforge.org/)도 살펴볼 것입니다. – yonosoytu

답변

4

open-uri를 통해 읽는 것이 필요한 콘텐츠를 생성하지 못하면 클라이언트가 자바 스크립트로 콘텐츠를 생성 할 가능성이 있습니다.

이것은 좋은 소식 일 수 있습니다. 페이지가 만드는 AJAX 요청을 검사하여 원하는 콘텐츠의 JSON 피드를 찾은 다음 직접 요청하고 구문 분석 할 수 있습니다. 이렇게하면 HTML을 파헤 치지 않고도 데이터를 얻을 수 있습니다.

그러나 어떤 이유로 작동하지 않는다면 브라우저의 일종으로 페이지를 열어야하고 클라이언트 측 자바 스크립트를 실행 한 다음 결과 DOM을 HTML로 덤프해야합니다. PhantomJS과 같은 것은 이러한 종류의 작업에 탁월한 선택입니다.

+0

팁 # 1은 나에게 많은 시간을 절약 해주었습니다. –

관련 문제