• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ruby Selenium リンクの取得方法)

Ruby Selenium リンクの取得方法

このQ&Aのポイント
  • Ruby初心者がSelenium Webdriverを使用して画像URLを取得する方法について困っています。
  • htmlのコードとXPathを仮定して、テキストに書き出す試みをしたがうまくいかず、改行のみが出力されてしまいます。
  • 解決策や助言をいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Nokogiri なら、 #!/usr/bin/ruby # coding: utf-8 require 'open-uri' require 'nokogiri' url = 'http://oshiete.goo.ne.jp/' doc = Nokogiri.parse open(url).read doc.search('img/@src').each do |src| puts src.text end 出力: http://u.xgoo.jp/cmm001/img/sn/sn_50_w.gif http://u.xgoo.jp/cmm001/img/logo/goo.gif /images/common/new.gif ... http://oshiete.xgoo.jp/images/common/powered_by_okwave.jpg?f685b8e http://cmm001.goo.ne.jp/cmm/img/wui/info_ed002/159784/140320_h150_40.jpg http://log000.goo.ne.jp/VL/Trace?c=151&tp=1&noscript=1&e=1&p=os_top が得られます。 教えて! goo のトップページの img 要素の src 属性を列挙します。 XPath の指定で、'img/@src' と、属性を指定することがポイントです。

kann3589
質問者

お礼

ありがとうございます。 img/@srcの指定は驚きです。 そのままだと余分なimgのリンクを取得してしまうので 色々と駆使して下記のようにして希望の動作を行う事が出来ました。 require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome driver.navigate.to "http://hoge.com" html = driver.page_source doc = Nokogiri::HTML(html) open("C:/Users/hoge/Desktop/hoge.txt", "a"){|f| hoge = doc.xpath('/html/body/hoge[1]') hoge.search('img/@src').each do |src| f.puts src.text end } 本当にありがとうございました。

その他の回答 (1)

回答No.1

div[contains(' hoge ', concat(' ', @class, ' '))]/img 簡便には、 div[@class='hoge']/img を、XPath に指定するとどうでしょうか。

kann3589
質問者

補足

ありがとうございます。 output = driver.find_element(:xpath,"//div[@class='hoge']/img" ) というような形でやってみたものの改行しか入力されません。 xpathの間違えではなさそうです。 nokogiriを使ってみましたが上手くいきません。

関連するQ&A