2016-10-01 3 views
-1

Я пишу парсер. я обнаружил, что я не могу разобрать эту конкретную страницу http://ekaterinburg.irr.ru/equipment/trade/showcase/Не удается разобрать страницу с nokogiri

У меня есть код

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

Но если я печатаю @result в моей рельсах консоли с помощью byebug я получаю только это:

<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n\n 

Если я попробую что-то вроде 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\"}">]>]>]>]> 

UPDATE 2 Я сделал поиск и нашел эту страницу на сайте, где я разбираю http://irr.ru/ajax/2012/common/action/passport_answer.php?message=login_fail&redirect=/&er=2 У него также есть сообщение not_used_cookie

+0

Почему вы используете backticks? Этот код вызовет исключение. – matt

+0

@matt Я фактически использую двойные обратные ключи '' '' (не знаю, как они вызывается на английском языке). Рассмотрите это как опечатку. – user2950593

+0

Добро пожаловать в переполнение стека. Пожалуйста, прочитайте «[ask]», включая связанные страницы, и «[mcve]». Нам нужно увидеть минимальный HTML, необходимый для дублирования проблемы в вашем самом вопросе. Ссылки rot затем ломаются, и когда они делают ваш вопрос, не будет иметь смысла никому, кто смотрит на него в будущем. Мы также должны иметь возможность запускать разделенный код, чтобы дублировать проблему. –

ответ

0

Рассмотрите возможность использования mechanize вместо Open-uri.

Сайт ожидает, что файлы cookie будут установлены.

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

Механизм автоматически хранит и отправляет файлы cookie, следует за перенаправлением и может следовать ссылкам и отправлять формы.

Смежные вопросы