#freeze
[[Ruby]]

#contents

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

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

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

* インストール [#g05cf378]

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

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

じゃあ、以下は基本編。

* 基本的な書き方 [#scdb8351]

 #!/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 っていうのはそこで生きてくるのだけど。

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

* なんか言語判定がおかしい時 [#v1c681c9]

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

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

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

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


* 参考サイト [#kd64abdf]

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

- https://www.qoosky.io/techs/71dd2d67ea

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS