Как получить контент с веб-сайта с помощью Ruby/Rails?

Я хочу скопировать определенный контент с веб-сайта, используя ruby/rails. Контент, который мне нужен, находится внутри html-тега marquee, разделенного div. Как я могу получить доступ к этому контенту с помощью ruby? Если быть точнее - хочу использовать какой-нибудь рубиновый гуй (желательно обувь). Как это сделать?


person Ariel    schedule 09.03.2011    source источник
comment
Что вы пытаетесь достичь? Вы хотите очистить другой сайт и вставить содержимое в базу данных? Вы просто хотите отобразить удаленный контент в пользовательском интерфейсе?   -  person Intelekshual    schedule 09.03.2011


Ответы (2)


На самом деле это не вопрос Rails. Это то, что вы бы сделали с помощью Ruby, а затем, возможно, отобразили бы с помощью Rails, или Sinatra, или Padrino — выберите свой яд.

Вы можете использовать несколько разных HTTP-клиентов:

Open-URI поставляется с Ruby и является самым простым. Net::HTTP поставляется с Ruby и является стандартным набором инструментов, но он низкоуровневый, поэтому вам придется проделать больше работы. HTTPClient и Typhoeus+Hydra поддерживают многопоточность и имеют как высокоуровневые, так и низкоуровневые интерфейсы.

Я рекомендую использовать Nokogiri для разбора возвращенного HTML. Он очень полнофункциональный и надежный.

require 'nokogiri'
require 'open-uri'

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

puts doc.to_html

Если вам нужно перемещаться по экранам входа в систему или заполнять формы, прежде чем вы попадете на страницу, которую нужно проанализировать, я бы порекомендовал обратить внимание на Mechanize. Он внутренне опирается на Nokogiri, поэтому вы можете запросить у него документ Nokogiri и проанализировать его, как только Mechanize получит нужный URL-адрес.

Если вам нужно работать с динамическим HTML, обратите внимание на различные инструменты WATIR. Они управляют различными веб-браузерами, а затем позволяют вам получить доступ к содержимому, которое видит браузер.

Когда у вас есть нужный контент или данные, вы можете «перепрофилировать» их в текст внутри страницы Rails.

person the Tin Man    schedule 09.03.2011

Если я правильно понимаю, вам нужен графический интерфейс для парсера веб-сайтов. Если это так, возможно, вам придется построить его самостоятельно.

Самый простой способ очистить веб-сайт — использовать nokogiri или механизированные драгоценные камни. По сути, вы даете этим библиотекам адрес веб-сайта, а затем используете их возможности XPath для выбора текста из DOM.

https://github.com/sparklemotion/nokogiri

https://github.com/sparklemotion/mechanize (для документации)

person Srdjan Pejic    schedule 09.03.2011
comment
предоставленные ссылки не работают, не могли бы вы их обновить? - person Alfie; 20.01.2015