найти повторяющиеся шаблоны на веб-страницах в ruby - PullRequest
5 голосов
/ 06 июня 2011

Я пытаюсь найти способ найти повторяющиеся шаблоны на веб-страницах, чтобы я мог извлечь содержимое в свою базу данных.

РЕДАКТИРОВАТЬ: я не знаю, что такое повторяющийся шаблон перед рукой, поэтому я не могу просто найти данный шаблон с помощью регулярных выражений или чего-то еще.

Например, если у вас есть 10 сайтовпродают автомобили, но сайты все разные, на каждом сайте автомобили перечислены в html несколько раз вниз по странице для этого сайта.

Остальные сайты будут перечислены по-своему, но каждый сповторяющийся паттерн.

Кто-нибудь знает как или имеет какой-либо опыт такого рода вещей?

Я люблю ruby, поэтому надеялся сделать это в ruby, если кто-либо имеет или знает какие-либо библиотеки./ драгоценные камни, которые могут мне помочь?

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Рик, машинное сопоставление с образцом - сложная тема, а не то, что вы найдете хорошую библиотеку для Ruby "из коробки".

Ответ Кайла был началом, как только вы получите страницу сRuby, типичной технологией для этого будет xpath или «Язык XML-пути».

Используя Xpath, вы можете написать простые селекторы, которые будут извлекать каждый элемент, соответствующий шаблону, например, каждыйссылка на HTML-документ может быть //a, каждое h1 будет //h1, а каждое изображение непосредственно внутри div, где у изображения есть класс "car", будет выглядеть примерно так: //div/image[class="car"].

Результатом XPath является перечисляемый список каждого элемента, который можно затем запросить для подэлементов, получить content() элементов и построить отношения для извлечения необходимых данных.

Библиотека для перехода на Ruby называется Nokogiri и доступна как драгоценный камень - прямая документация немного слабовата, но там все описано, если вы знаете, что искатьfor.

Некоторые библиотеки для Ruby сочетают сканирование с простым способом доступа к базовому HTML / XML в качестве документа Nokogiri, одним из таких примеров является Anemone, который представляет собой "каркас"для создания веб-пауков в Ruby "- и я могу очень рекомендовать его.

0 голосов
/ 06 июня 2011

В Ruby, если вы хотите получить текст веб-страницы, все, что вам нужно сделать, это использовать пространство имен Net::HTTP.Метод get возвращает строковое представление веб-страницы.

Net::HTTP.get 'http://www.target-site.com', '/target-page.html'

Возможно, после этого вы захотите использовать какой-то анализатор XML, чтобы создать модель страницы и перемещаться по ней.Я слышал хорошие вещи о Hpricot.

...