ページ内で「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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/19 16:59
2020/12/19 17:02
2020/12/19 17:04
2020/12/19 17:04