人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ruby hpricot で下記をパースして、北海道,http://xxxx.hokkaido.xxxx/ というようなCSV(でなくてもいいですが)をつくりたいのです。どうパースの部分を書くのでしょうか? テーブルで、名前、リンクの順にならんでいる事例なのでぴったりのがないとは思いますが、もしあったらのURLもお願いします。

<table >
<tr>
<td >
北海道</td>
<td >
<A href="http://xxxx.hokkaido.xxxx/" >
●</A></td>
</tr>
</table>

●質問者: isogaya
●カテゴリ:コンピュータ インターネット
✍キーワード:CSV Ruby URL パース リンク
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● moro
●100ポイント ベストアンサー

http://code.whytheluckystiff.net/hpricot/

URLは公式サイトです。速度的な問題があればパース部分には最適化の余地はありますけど、とりあえずこんな感じでどうでしょう。

配列の配列でとるので、あとはお好きなように出力してください。

#!/usr/bin/env ruby
# vim:set fileencoding=utf-8 filetype=ruby
$KCODE = 'u'

require 'rubygems'
require 'hpricot'

html = <<HTML
<table>
<tr>
<td >
北海道</td>
<td >
<A href="http://xxxx.hokkaido.xxxx/" >
●</A></td>
</tr>
</table>
HTML

doc = Hpricot.parse(html)
arr = doc.search('table tr').map do |tr|
 td_name, td_link, = tr.search('td')

 [ td_name.inner_html.strip,
 link = td_link.search('a').attr("href").strip ]
end

p arr
◎質問者からの返答

ありがとうございます。

link = td_link.search('a').attr("href").strip の部分なんですけど、リンクがなく空白のセルだとエラーでとまります。回避するにはどうするといいのでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ