Я пытаюсь разобрать HTML-страницу с Nokogiri, но у меня есть некоторые проблемы с текстом. В основном, я не могу избавиться от нежелательных символов. При разборе, когда я получаю строку, я всегда стараюсь очистить ее как можно больше. Я пытаюсь преобразовать непечатаемые символы в уникальные пробелы. Я использую этот метод без успеха после многих модификаций:
def clear_string(str)
CGI::unescapeHTML(str).gsub(/\s+/mu," ").strip
end
Например, разместите этот фрагмент HTML (скопированный из http://www.gisa.cat/gisa/servlet/HomeLicitation?licitationID=1061525)
<tr>
<td><span class="linkred2">Tramitació:</span></td>
<td> ordinària </td>
</tr>
Некоторые промежуточные примеры выходных данных, показанные Netbeans 7.0 с использованием Nokogiri и clear_string
(метод, определенный выше)
row.at("td[1]").text # => "Tramitació:"
row.at("td[2]").text # => " ordinària "
clear_string(row.at("td[2]").text) # => " ordinària"
row.at("td[2]").text.scan(/./mu) # => ["\302\240", "o", "r", "d", "i", "n", "\303\240", "r", "i", "a", " "]
Я не знаю, почему strip
не избавляется от первых пробелов. Более того, результат анализа после применения clear_string
выводится в файл yaml с использованием YAML::dump
. Его содержание соответственно для обоих текстов:
"Tramitaci\xC3\xB3:"
!binary |
wqBvcmRpbsOgcmlh
Первый, похоже, не в порядке, но я не знаю, как исправить второй случай.