締切済み

Xpathがわからない。

  • 困ってます
  • 質問No.9594660
  • 閲覧数66
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 61% (79/129)

capybaraとXpathを使ってrubyスクレイピングをしようとしています。

まず添付画像を御覧ください。
ゴールは添付画像のurl部分を(文字列として)抽出することです。(末尾がclans/7.pngみたいになってるやつです)
条件として、添付画像のように、親要素の親要素のクラスに "checkedin"を含むこと。
(画像では省略されていますが、本来のソースコードでは添付画像の一番上の要素に類するものがいくつも並んでいます。その中から、画像のように "checkedin" を含むものを抽出しようとしています)

親要素の親要素の条件を指定しない場合は
images = session.find_all(:xpath, '//img[contains(@src,"clans")]')
puts images[i][:src]
といったコードでURLを抽出できたのですが、上述の条件を指定する場合にどのような記述をすれば良いかわかりません。

checkedin = session.find_all(:xpath, 'tr[contains(@class,"checkedin") and .//img[contains(@src,"clans")]]')
と書いたり他色々試しましたが、全てエラーです。
上述の条件を指定して記述するにはどうすればいいのでしょうか。。

(先祖要素の条件指定でなく、まず先祖要素の条件を指定してから子要素のurl抽出をするのもあると思いそれっぽい手法を試しましたが、capybaraそのものが良くわかっておらずエラーになります)

(ちなみにcapybaraを使っているのは、以前質問した時におすすめされたからです。
詳細URL→https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13198824358

本当はnokogiriでやりたかったのですが、nokogiriですとurl部分が正常に取得できませんでした。
nokogiriでもurl部分を正しく抽出できる方法があれば是非教えてください。capybaraよりnokogiriの方が使いやすいので。。)

質問の回答になっていないそもそも論は禁止でお願いします。(python使え等)

回答 (全1件)

  • 回答No.1

ベストアンサー率 90% (10/11)

XPath だと tr[contains(concat(' ',@class,' '),' checkdin ')]//img
CSS だと tr.checkdin img
くらいで検索して src を抜き出せば良いと思います。
capibara は nokogiri 使ってますよ。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ