![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんばんは。
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ベストアンサー
- 回答日時:
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_ …
http://cmm001.goo.ne.jp/cmm/img/wui/info_ed002/1 …
http://log000.goo.ne.jp/VL/Trace?c=151&tp=1&nosc …
が得られます。
教えて! goo のトップページの img 要素の src 属性を列挙します。
XPath の指定で、'img/@src' と、属性を指定することがポイントです。
ありがとうございます。
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
}
本当にありがとうございました。
No.1
- 回答日時:
div[contains(' hoge ', concat(' ', @class, ' '))]/img
簡便には、
div[@class='hoge']/img
を、XPath に指定するとどうでしょうか。
この回答への補足
ありがとうございます。
output = driver.find_element(:xpath,"//div[@class='hoge']/img" )
というような形でやってみたものの改行しか入力されません。
xpathの間違えではなさそうです。
nokogiriを使ってみましたが上手くいきません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(再質問)エクセルのマクロボ...
-
エクセルvbaでチェックボックス...
-
じゃんけんのプログラムを作っ...
-
VBA メモ帳の上書き保存がしたい
-
三項でたとえば交換って
-
パソコンのスクリーンセーバー...
-
Beautiful Soupのインストール...
-
ビーリアルのユーザー名を変え...
-
100万件越えCSVから条件を満た...
-
pandasでsqlite3にテーブル作成...
-
教えてください
-
1、Rstudioで回帰直線を求める...
-
英数字を含む文字列(0-9,A-Z)...
-
tasty qube エクセル スプレッ...
-
プログラミング
-
エクセル 連続保存マクロ
-
エクセルで秒を日時換算する方法
-
A4 持ち込み
-
前回の質問の続き
-
あせんうぶり言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「arg」は何の略?
-
VBA/GetTickCountの49.7日の境...
-
例外の再スロー時に、その原因...
-
Ruby Selenium 要素の待機
-
ブロックローカル変数
-
SMLのエラーについて
-
【Ruby】基本的な質問 数字を...
-
プログラミング言語 R
-
get() と find() の違いについて
-
教えてください。vb5.0
-
What class are you in? には何...
-
エラー「メソッドまたはデータ...
-
エクセルVBA オートフィルタで...
-
Csvファイルの最終行を取得する...
-
クラス名やモジュール名の競合...
-
VBAで型が一致しないエラー(バ...
-
HSTLやSSTL等のI/Oピン
-
実行時エラー450:引数の数が一...
-
【BrowseForFolderでデスクトッ...
-
テンプレートの特殊化でコンパ...
おすすめ情報