- ベストアンサー
Ruby Selenium リンクの取得方法
- Ruby初心者がSelenium Webdriverを使用して画像URLを取得する方法について困っています。
- htmlのコードとXPathを仮定して、テキストに書き出す試みをしたがうまくいかず、改行のみが出力されてしまいます。
- 解決策や助言をいただけると助かります。
- みんなの回答 (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' と、属性を指定することがポイントです。
その他の回答 (1)
- MillenniuM
- ベストアンサー率58% (42/72)
div[contains(' hoge ', concat(' ', @class, ' '))]/img 簡便には、 div[@class='hoge']/img を、XPath に指定するとどうでしょうか。
補足
ありがとうございます。 output = driver.find_element(:xpath,"//div[@class='hoge']/img" ) というような形でやってみたものの改行しか入力されません。 xpathの間違えではなさそうです。 nokogiriを使ってみましたが上手くいきません。
お礼
ありがとうございます。 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 } 本当にありがとうございました。