2016-10-01 6 views
-1

파서를 쓰고 있습니다.nokogiri로 페이지를 구문 분석 할 수 없습니다.

<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n\n 
: 나는 byebug 사용하여 내 레일 콘솔에서 @result를 인쇄하면 은 내가이 특정 페이지 http://ekaterinburg.irr.ru/equipment/trade/showcase/

을 구문 분석 할 수 있다는 것을 발견 나는이 코드

link = "http://ekaterinburg.irr.ru/equipment/trade/showcase/" 
page = open(link, :allow_redirections => :all) 
page = Nokogiri::HTML page 
@result = page.to_html 

는하지만에만이 얻을

page.css('title')과 같은 것을 시도해도 아무 것도 찾을 수 없습니다.

이 코드는 다른 페이지에서 제대로 작동합니다. 이 관련된 경우

또한 사용

gem 'addressable' 
gem 'open_uri_redirections' 

UPDATE 좀 더 유용한 정보 : 나는 Nokogiri::HTML page을 쓸 때 내가 할 일에 대한 not_used_cookie 메시지 :

(byebug) Nokogiri::HTML page 
#<Nokogiri::HTML::Document:0x..fd980c3da name="document" children=[#<Nokogiri::XML::DTD:0x..fd980c20e name="html">, #<Nokogiri::XML::Element:0x..fda73e682 name="html" children=[#<Nokogiri::XML::Element:0x..fda73e4d4 name="body" children=[#<Nokogiri::XML::Element:0x..fda73e33a name="p" children=[#<Nokogiri::XML::Text:0x..fda73e10a "{\"message\":\"not_used_cookie\"}">]>]>]>]> 

업데이트 2 일부 검색을 수행하고이 페이지를 구문 분석 한 사이트에서 찾았습니다. http://irr.ru/ajax/2012/common/action/passport_answer.php?message=login_fail&redirect=/&er=2 메시지가 있습니다. not_used_cookie

+0

왜 백틱을 사용하고 있습니까? 이 코드는 예외를 발생시킵니다. – matt

+0

@matt 실제로 이중 백틱은''''(그들이 어떻게 영어로 불리는 지 모른다.). 이것을 오판으로 간주하십시오. – user2950593

+0

스택 오버플로에 오신 것을 환영합니다. 링크 된 페이지와 "[mcve]"를 포함하여 "[ask]"를 읽으십시오. 질문 자체에 문제를 복제하는 데 필요한 최소 HTML을 확인해야합니다. 링크 썩어 다음 깨고 그리고 그들이 당신의 질문을 할 때 그것을 보면서 미래에 이해가되지 않습니다. 또한 문제를 복제하기 위해 스트립 된 코드를 실행할 수 있어야합니다. –

답변

0

Open-uri 대신 mechanize을 사용하는 것이 좋습니다.

사이트에서 쿠키를 설정해야합니다.

page = open(link) 
page.read 
=> "{\"message\":\"not_used_cookie\"}" 

기계화는 자동으로 쿠키를 저장 및 전송하고 리디렉션을 따르며 링크를 따라 양식을 제출할 수 있습니다.

관련 문제