Rails 3 извлекает данные с другого сайта

#javascript #jquery #ruby-on-rails #ruby #ruby-on-rails-3

#javascript #jquery #ruby-on-rails #ruby #ruby-on-rails-3

Вопрос:

У меня есть запрос клиента на один из моих проектов, в котором они хотят иметь возможность вводить URL-адрес и извлекать из него некоторую информацию с сайта, URL-адрес которого они ввели, и сохранять его в базе данных.

Итак, пользователь вводит:http://www.example.com/2342342 и мой контроллер посещает этот сайт, получает содержимое первого <h1>Tag</h1> на сайте и сохраняет это в базе данных. Возможно ли это? Если да, то как бы я это сделал? Буду ли я использовать для этого некоторые команды rails или что-то еще, например jQuery?

Ответ №1:

Nokogiri — отличный анализатор и может работать непосредственно с URL.

Итак, два шага:

  1. Создайте экземпляр объекта Nokogiri с URL в качестве параметра

  2. Проанализируйте html-страницу, чтобы получить то, что вы ожидаете

Инструкции можно найти здесь: http://nokogiri.org/tutorials/parsing_an_html_xml_document.html

Поскольку вы будете работать с другим сайтом, имейте в виду два совета:

  • завершите свои запросы так, чтобы вы могли восстановить, если веб-сайт не работает

  • рассмотрите возможность использования ajax-запроса, поскольку он может быть длинным

Комментарии:

1. Поправьте меня, если я ошибаюсь, но ajax не будет работать, поскольку это междоменный запрос. Я думаю, у вас правильная идея использовать Nokogiri.

2. Суть в том, чтобы использовать ajax-запрос к вашему собственному контроллеру, который будет обрабатывать содержимое Nokogiri, завернутое в begin / rescue.

Ответ №2:

Я бы проверил Railscast здесь:

http://railscasts.com/episodes/190-screen-scraping-with-nokogiri

Здесь очень хорошо объясняется, как использовать Nokogiri и извлекать контент с других сайтов.