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>に含まれている文字列を取得するにはどのようにすればいいのでしょうか?

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/02/13 13:34:42
  • 終了:2013/02/20 13:35:12

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4545ベストアンサー獲得回数18952013/02/14 23:19:44

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

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
id:osietekudasaibadr

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

2013/02/21 10:02:49

その他の回答(1件)

id:TransFreeBSD No.1

TransFreeBSD回答回数665ベストアンサー獲得回数2672013/02/13 22:21:47

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

id:osietekudasaibadr

ありがとうございます!xpath勉強いたします。

2013/02/21 10:00:33
id:a-kuma3 No.2

a-kuma3回答回数4545ベストアンサー獲得回数18952013/02/14 23:19:44ここでベストアンサー

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

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
id:osietekudasaibadr

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

2013/02/21 10:02:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません