Загрузка веб-страницы для синтаксического анализа в Rails

StackOverflow https://stackoverflow.com/questions/1469833

Вопрос

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

Это было полезно?

Решение

Вам следует попробовать такие драгоценные камни, как Хприкот (Вики) или Нокогири.

Пример 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top