NokogiriでHTMLページを解析しようとしていますが、テキストに問題があります。主に、私は不要な文字を取り除くことはできません。解析中、私は文字列を取得するときに、私は常にそれを可能な限りきれいにしようとします。私は印刷できない文字をユニークなスペースに変換しようとしています。ruby(1.8.7):スクラップ中に印刷できない文字を取り除くには?
def clear_string(str)
CGI::unescapeHTML(str).gsub(/\s+/mu," ").strip
end
例えば、(http://www.gisa.cat/gisa/servlet/HomeLicitation?licitationID=1061525からコピー、貼り付け)このHTML断片をsupose
<tr>
<td><span class="linkred2">Tramitació:</span></td>
<td> ordinària </td>
</tr>
いくつかの中間体の例出力は、NetBeans 7.0鋸山を用いて示した:Iは変更多くの後に成功せずにこの方法を使用しますそして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
はFiのを取り除くしない理由を私は知りません最初のスペース。さらに、clear_string
を適用した後の解析結果は、YAML::dump
を使用してyamlファイルにダンプされます。その内容は、両方のテキストのそれぞれです:
"Tramitaci\xC3\xB3:"
!binary |
wqBvcmRpbsOgcmlh
第1のものはほとんど問題ないと思われますが、第2のケースの修正方法はわかりません。
どの鋸山のバージョンを使用している。そのため、あなたはそうのよう
IGNORE
とTRANSLIT
を組み合わせることができますか? –mechanize 1.0.0とnokogiri 1.4.4 –