Получить заголовок, контент по ссылке в рельсах - PullRequest
3 голосов
/ 02 января 2012

Я только начал изучать рельсы.Не могли бы вы помочь мне разобрать разбор одной ссылки?Хороший учебник тоже поможет ...

Вопрос:

Когда вы отправляете ссылку в Digg, Facebook и т. Д. После того, как вы скажете прикрепить ссылку, она анализирует ссылку, чтобы получить заголовок, контент, изображения конкретного URL.Не могли бы вы помочь мне, как подобная вещь может быть реализована в рельсах?

Я смотрел на парсеры фидов, такие как feedzirra и т. Д., Но они, похоже, получают полный фид веб-сайта ... Не только ссылку, которую мы ищем.Или я где-то совершаю ошибку?

Заранее большое спасибо.

Ответы [ 3 ]

6 голосов
/ 02 января 2012

Похоже, что вы ищете что-то вроде Pismo: https://github.com/peterc/pismo

require 'pismo'

# Load a Web page (you could pass an IO object or a string with existing HTML data along, as you prefer)
doc = Pismo::Document.new('http://www.rubyinside.com/cramp-asychronous-event-driven-ruby-web-app-framework-2928.html')

doc.title     # => "Cramp: Asychronous Event-Driven Ruby Web App Framework"
doc.author    # => "Peter Cooper"
doc.lede      # => "Cramp (GitHub repo) is a new, asynchronous evented Web app framework by Pratik Naik of 37signals (and the Rails core team). It's built around Ruby's EventMachine library and was designed to use event-driven I/O throughout - making it ideal for situations where you need to handle a large number of open connections (such as Comet systems or streaming APIs.)"
doc.keywords  # => [["cramp", 7], ["controllers", 3], ["app", 3], ["basic", 2], ..., ... ]

Предупреждение об изображении:

Извлечение изображения относится только к изображениям с абсолютными URL-адресами.

4 голосов
/ 02 января 2012

ootoovak ответ правильный, но я предпочитаю использовать mechanize как альтернативу. Используя механизацию, это будет работать для вас:

agent=Mechanize.new # Creates a new Mechanize Object
agent.get("http://domain.de/page.html") # This fetches the page given as parameter
agent.page.title # This will return the title of the page

Для установки механизации просто добавьте gem 'mechanize' к вашему Gemfile и запустите bundle install.

2 голосов
/ 19 апреля 2013
> Mechanize.new.get('http://google.com').title
=> "Google"

Убедитесь, что вы require 'mechanize' или добавили gem 'mechanize' к вашему Gemfile .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...