Ruby

webをダウンロードするにはもちろん、open-uriなんかを使うのがいいわよね。

でも最近はJavaScriptなサイトなんかがあって、うまくいかないことも多いわ。

そんな時の究極界はやっぱり、ブラウザを直接コントロールして取得する事よね。スクリーンショットも撮れるのよ。

インストール

Firefoxと selenium-webdriver をインストールしましょう。

ちなみに Linux なら headless ドライバもほしいわね。これがあるとすごく便利なのだけど、詳しくは次の機会にね。

じゃあ、以下は基本編。

基本的な書き方

#!/usr/bin/ruby

require 'selenium-webdriver'

class Hash
 def getWeb(fn)
   driver = Selenium::WebDriver.for :firefox
   driver.get self["url"]
   driver.save_screenshot fn
   r = driver.page_source
   driver.quit
   r
 end
end

#

page = Hash.new
page["name"] = "YahooJapan"
page["url"] = "http://www.yahoo.co.jp/"

source = page.getWeb(page["name"]+".png")
File.write(page["name"]+".html",source)

こんなところかしら。

スクリーンショットが、 名前.save_screenshot ファイル名 だけでできる のがまた凄いわね。おもしろーい。

でも本当に面白いのは、ブラウザがちゃんと開いてページロードされ、保存されて終わるとこだと思うけどね。 すごい。

ちなみに、 このままだと便利だけど速度が出ない わよね。さっきの headless っていうのはそこで生きてくるのだけど。

このへんは、また次回ね。

なんか言語判定がおかしい時

取り込んだホームページが、手で表示した場合と違う時ってあるかしら。特に日本語サイトにならないとか。

実は selenium-webdriverって、ユーザーの標準プロファイルを使わない の。使わせるためには、以下のようにしなくちゃいけないのよ。

driver = Selenium::WebDriver.for(:firefox, :profile => "プロファイル名")

firefoxの方は、 firefox -p で起動するとプロファイル作成ができるから、その時につけた名前を指定してね。

参考サイト

ここはとても詳しいわね!


トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-10-12 (水) 12:03:22