Некоторые пробелы удаляются при очистке строки с помощью Nokogiri - PullRequest
0 голосов
/ 13 марта 2012

Я очень новичок в Ruby, и в настоящее время я работаю над очисткой сайта с использованием Nokogiri для практики.Я хотел бы почерпнуть детали из «сделок» со случайного сайта о покупке групп.Мне удалось успешно очистить сайт, но у меня возникли проблемы с анализом выходных данных.Я попробовал решения, предложенные в здесь , а также с помощью регулярных выражений.Пока что мне не удалось.

Я пытаюсь разобрать следующий заголовок / описание со страницы этой :

Frosty Frappes starting at P100 for P200 worth at Café Tavolo – up to 55% off

Вот что я получил:

FrostyFrappes starting at P100 for P200 worth at Caf Tavolo  up to 55% off

Вот фрагменты моего кода:

require 'uri'
require 'nokogiri'

html = open(url)
doc = Nokogiri::HTML(html.read)
doc.encoding = "utf-8"
title = doc.at_xpath('/html/body/div/div[9]/div[2]/div/div/div/h1/a')
puts title.content.to_s.strip.gsub(/[^0-9a-z%&!\n\/(). ]/i, '')

Пожалуйста, скажите мне, если я что-то пропустил.Спасибо.

1 Ответ

2 голосов
/ 13 марта 2012

Ваш xpath слишком жесткий, и ваше регулярное выражение удаляет символы, которые вы хотите сохранить.Вот как я бы это сделал:

title = doc.at('div#contentDealTitle h1 a').text.strip.gsub(/\s+/,' ')

То есть взять текст из первого тега, который идет после div # contentDealTitle и h1, убрать его (удалить начальные и конечные пробелы) и заменить все последовательности 1или больше пробельных символов с одним пробелом.

...