#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.
Итак, два шага:
-
Создайте экземпляр объекта Nokogiri с URL в качестве параметра
-
Проанализируйте 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 и извлекать контент с других сайтов.