Как получить контент с веб-сайта, используя Ruby / Rails? - PullRequest
3 голосов
/ 09 марта 2011

Я хочу скопировать определенный контент с сайта, используя ruby ​​/ rails.Содержимое, которое мне нужно, находится внутри выделенного HTML-тега, разделенного на div.Как я могу получить доступ к этому контенту, используя ruby?Чтобы быть более точным - я хочу использовать какой-нибудь рубиновый графический интерфейс (желательно обувь).Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

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

Существует несколько различных HTTP-клиентов, которые вы можете использовать:

приходит Open-URIс рубином и проще всего.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.

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

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

1 голос
/ 09 марта 2011

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

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

https://github.com/sparklemotion/nokogiri

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

...