- 締切済み
Firefoxの"ページのソースを表示"と"要素を
Firefoxの"ページのソースを表示"と"要素を調査" Webからデータを自動で取得するRubyのプログラムを作りたいのですが、 データが単純にHTMLだけで表示されていないようで、 Firefoxの"ページのソースを表示”では私が欲しいデータが表示されません。 ですが、私が欲しいデータが表示されている部分を選んだ上で、 右クリックして"要素を調査"を選ぶと、私が欲しいデータが表示されます。 (画像を添付。この例では湿度59%) http://www.wunderground.com/q/zmw:00000.1.47671?MR=1 この欲しいデータをRubyで取得するにはどうすれば良いか、 アドバイス頂けないでしょうか。 よろしくおねがいします。 以上
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
ソースにないとすると、JavaScriptで動的に生成されているのだと思います。 Ruby単体では出来ないので、Rubyでブラウザを制御することになります。 Seleniumというのをよく目にしますね。元々はスクレイピング用じゃなくてウェブアプリテスト用とのこと。 参考: http://qiita.com/tomerun/items/9cb81d7a98150ff22f53 他にもいろいろあるようです。 http://voidptr.seesaa.net/article/396226246.html
補足
ありがとうございます。 早速Seleniumをインストールしました。 ですが、該当する欲しい部分の抽出がうまくいかず、、、、 FirebugでXpathを取得し、以下の通りしたものの、 何も出力(取得)されず。。。。 何かアドバイスがあれば、ご教示下さい。 # _*_ coding: utf-8 _*_ require 'open-uri' require 'nokogiri' require 'selenium-webdriver' url = 'http://www.wunderground.com/q/zmw:00000.1.47671?MR=1' driver = Selenium::WebDriver.for :firefox driver.get url elements = driver.find_elements(:xpath => "/html/body/div[1]/div/section/div/div[1]/div/div[5]/div[1]/div[2]/div[2]/div[2]/div[3]/table/tbody/tr[1]/td[12]") elements.each do |element| puts element.text.encode('UTF-8') end driver.quit 以上