Загрузка веб-страницы для синтаксического анализа в Rails
-
16-09-2019 - |
Вопрос
Предположим, я хочу получить страницу из Интернета в свое приложение и произвести с ней какой-то синтаксический анализ.Как мне это сделать?С чего мне следует начать?Должны ли потребоваться какие-то плагины / драгоценные камни?Какова ваша обычная практика в решении подобных задач?
Решение
Вам следует попробовать такие драгоценные камни, как Хприкот (Вики) или Нокогири.
Пример Hpricot:
require 'open-uri'
require 'rubygems'
require 'hpricot'
html = Hpricot(open(an_url).read)
# This would search for any images inside a paragraph (XPath)
html.search('/html/body//p//img')
# This would search for any images with the class "test" (CSS selector)
html.search('img.test')
Пример Нокогири:
require 'open-uri'
require 'rubygems'
require 'hpricot'
html = Nokogiri::HTML(open(an_url).read)
# This would search for any images inside a paragraph (XPath)
html.xpath('/html/body//p//img')
# This would search for any images with the class "test" (CSS selector)
html.css('img.test')
Нокогири, как правило, получается быстрее.Обе библиотеки обладают большим функционалом.
Другие советы
То, что вы хотите сделать, называется "Выскабливание"
Райан Бейтс сделал два отличных скринкаста на эту тему:
Лично мне больше нравится Нокогири.Вы также можете ознакомиться со следующим ответом: Лучший синтаксический анализатор Rails HTML