🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1394閲覧

xpathで要素を指定しても取得できる場合とできない場合がある。

Mitsuki_0

総合スコア25

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/12/19 16:16

ページ内で「UPC:」という文字を含んでいる要素を指定して、次に記載されている番号を取得しようとしていますが
取得できる場合とできない場合があります。
「UPC:」という文字で指定しているので書かれている位置が違っても取得できると思うのですが、
なぜ取得できないのかが分かりません。
取得ができない理由と対策をご教授頂けますようお願い致します。

参考ページ
https://qiita.com/rllllho/items/cb1187cec0fb17fc650a

取得できたページ:https://www.ebay.com/itm/Bratz-World-Tokyo-Japan-Collectors-Edition-Kumi/402596195261?hash=item5dbc9a6bbd:g:pfcAAOSw4Z1f0DUY
取得できなかったページ:https://www.ebay.com/itm/Disney-Toy-Story-Woody-Alien-Kaiyodo-Japan-Revoltech-Pixar-Figure-Collection/174548587470?epid=691486582&hash=item28a3e813ce:g:OssAAOSwpnlfzUQP

require 'nokogiri' require 'open-uri' # 対象URL url = "https://www.ebay.com/itm/Disney-Toy-Story-Woody-Alien-Kaiyodo-Japan-Revoltech-Pixar-Figure-Collection/174548587470?epid=691486582&hash=item28a3e813ce:g:OssAAOSwpnlfzUQP" def setup_doc(url) charset = 'utf-8' doc = Nokogiri::HTML(open(url),nil,charset) # <br>タグを改行(\n)に変えて置くとスクレイピングしやすくなる。 doc.search('br').each { |n| n.replace("\n") } doc end def scrape(url) doc = setup_doc(url) upc_content = doc.xpath("//td[contains(text(), 'UPC:')]/following-sibling::td[1]").text upc = upc_content.strip! upc end puts scrape(url)

作業環境:AWS

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UPC:が含まれてないのでは?

Ruby

1 doc = Nokogiri::HTML(open(url),nil,charset) 2 p /UPC:/ =~ doc.text

してみましょう。

投稿2020/12/19 16:39

otn

総合スコア85882

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mitsuki_0

2020/12/19 16:59

otn様 昨日に引き続きありがとうございます。 実行してみたところ「nil」が返ってきました。 「UPC:」が含まれていない、という事なのだと思いますが ページを目視する限りではItem specificsの欄に「UPC:」があるのですが どういう事なのでしょうか?
otn

2020/12/19 17:02

JavaScriptで追加しているのでは? その場合は、open-uri や mechanize では取得できないので、Selenium等を使ってください。
Mitsuki_0

2020/12/19 17:04

失礼しました。 別のブラウザでURLにアクセスしたところ 別のページになりました。 恐らく類似商品の出品ページに自動的に偏移しているのだと思われます。
Mitsuki_0

2020/12/19 17:04

ありがとうございます。 Seleniumでやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問