解決済み

Ruby Selenium リンクの取得方法

  • すぐに回答を!
  • 質問No.8710752
  • 閲覧数598
  • ありがとう数10
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 71% (5/7)

こんばんは。
Ruby初心者ですが、現在、Selenium Webdriver、chromeにはまり、スクレイピングのような事をしています。

そんな中で困っている事があるのですが、

とあるサイトの画像URLを取得、テキストに追記で書き出ししようと色々と調べたのですが全く分からず困っています。


<div class="hoge">
<img src="http://hoge" alt=""></div>

htmlはこんなようでxpathは/hoge/imgと仮定します。


open("hoge.txt", "a"){|f|

output = driver.find_element(:xpath, '/hoge/img')

f.puts "#{output.text}"

}


のように書いてみたもののテキストに改行しか出力されない状態です。

何卒どうかご教授、よろしくお願いします。

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

  • 回答No.2

ベストアンサー率 58% (42/72)

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

お礼率 71% (5/7)

ありがとうございます。

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

}


本当にありがとうございました。
投稿日時 - 2014-08-11 14:33:41

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 58% (42/72)

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

お礼率 71% (5/7)

ありがとうございます。

output = driver.find_element(:xpath,"//div[@class='hoge']/img" )


というような形でやってみたものの改行しか入力されません。
xpathの間違えではなさそうです。
nokogiriを使ってみましたが上手くいきません。
投稿日時 - 2014-08-10 10:57:38
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

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

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

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

ピックアップ

ページ先頭へ