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

rubyのmechanaizeで、検索できる情報の隣の情報を取得するにはどうすればいいですか???


例)下記のようなソースがあるとします。idやclassのような特定できるものがありません。
<table>
<tr>
<td>aaa</td><td>123</td>
</tr>
<tr>
<td>bbb</td><td>145</td>
</tr>
<tr>
<td>aaa</td><td>678</td>
</tr>
</table>
こちらでわかっていて、検索をすることができるのはaaaやbbbとなっている<td>の文字列で、欲しい情報はその隣の数値になっている<td>の情報です。今回は数値にしましたが、実際には文字列です。

この場合、例えば、bbbの文字列が入っている<td>の隣の<td>に含まれている文字列を取得するにはどのようにすればいいのでしょうか?

よろしくお願いします。

●質問者: osietekudasaibadr
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TransFreeBSD

xpath使えるようなので

//td[normalize-space(text())='bbb']/following-sibling::td[1]/self::text()

かな?
http://www.techscore.com/tech/XML/XPath/XPath3/xpath03-2.html/
http://oshiete.goo.ne.jp/qa/5190224.html


osietekudasaibadrさんのコメント
ありがとうございます!xpath勉強いたします。

2 ● a-kuma3
ベストアンサー

こんな感じなのかな、となんとなく思ってました。

agent.page.parser.search("td").each { |td|
 if td.text == "bbb" then
 puts td.next.text
 end
}

参考。
http://nokogiri.org/Nokogiri/XML/Node.html
http://mechanize.rubyforge.org/Mechanize/Page.html


だって、難しいんですもの >xpath
stackoverflow に、こんなのも落ちてました。
http://stackoverflow.com/questions/8207044/using-ruby-mechanize-to-select-next-element-after-selected-element

puts agent.parser.xpath('.//td[.="bbb"]')[0].next.text

osietekudasaibadrさんのコメント
いつもありがとうございます!そして、お返事が遅くなってすみません。 何とかなりました。 色々な方法があるんですね。とても参考になりました。今後もよろしくお願いします。
関連質問

●質問をもっと探す●



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