日本語URLを含む「こえ部」のタグページを解析す
こえ部(http://koebu.com)で投稿数が2以上のお題を抽出したいと考えた。
最初はこんな感じでやろうとしたが…
require 'mechanize' url = 'http://koebu.com/topic/tag/男声向け' agent = WWW::Mechanize.new page = agent.get(url) puts page.body.tosjis
「指定したお題が見つかりません」と言われる。どうやら
url = 'http://koebu.com/topic/tag/男声向け'
が上手く認識できてないみたいで以下のようにURLエンコードしてもダメ。
url = 'http://koebu.com/topic/tag/%E7%94%B7%E5%A3%B0%E5%90%91%E3%81%91'
よってopen-urlを使った。(原因を問い詰めないのが俺流)
- URIモジュールにutf8フラグつきの文字列を食わせたらquery_formのエンコードが化けたでござるの巻 - とあるモバイル系エンジニアの日々
- RubyのNokogiriはHTMLの日本語エンコーディングを保持しないので困る++ - きたももんががきたん。
- 【2009/01/18 11:16】
require 'open-uri' require 'hpricot' maxpagenum = 3 limitpost = 2 1.upto(maxpagenum) do |num| doc = Hpricot(open("http://koebu.com/topic/tag/%E7%94%B7%E5%A3%B0%E5%90%91%E3%81%91&page=" + num.to_s)) (doc/%Q[li.unitTi]).each do |elem| if elem.inner_text.slice(%r[\((\d+)\)$], 1).to_i >= limitpost title = elem.to_html.slice(%r[<a href=".*?">(.*)</a>], 1) title = elem.inner_text url = "http://koebu.com/" + elem.to_html.slice(%r[<a href="(.*?)" title="], 1) puts title puts url end end end
これでよし。