環境
- ruby 2.5
概要
RubyでスクレイピングするならMechanize一択だが、昨今のサイトではJavascriptが動かないとデータが取れないサイトも多い。
PhantomJSが死んでしまった今、Headless Chromeが1番いいのだが、Puppeteerはちょっと、、て時にRubyでやりたいて時にselenium-webdriverを使ってスクレイピングをしてみたメモ
インストール
必要なものは以下
Chrome
先に動かすサーバーにChrome、ないしはChromiumが必要
ChromeDriver
Chromeを操作するのに必要
https://sites.google.com/a/chromium.org/chromedriver/
selenium-webdriver
これはGemなのでbundle init して bundle add selenium-webdriver
でおk
コード
Yahooにアクセスしてスクリーンショットを取るだけのシンプルなサンプルコードは以下
require "selenium-webdriver" ua = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" options = Selenium::WebDriver::Chrome::Options.new( binary: "/Applications/Chromium.app/Contents/MacOS/Chromium", args: ["--headless", "--disable-gpu", "window-size=1280x800"], ) driver = Selenium::WebDriver.for :chrome, options: options driver.navigate.to "https://www.yahoo.co.jp" puts driver.title driver.save_screenshot("ss.png")
で実行するとスクリーンショットが取れているはず