スクレイピングごにょごにょ - you1025/my_something_flagments GitHub Wiki

環境構築

作業用のディレクトリを作成する。

$ mkdir scraping_test
$ cd scraping_test

インストール

Selenium からヘッドレスブラウザを呼び出して JavaScript による動的環境でもスクレイピングが可能な環境を構築する。

Selenium + Nokogiri

Gemfile を作成する。

$ bundle init
Writing new Gemfile to /path_to_dir/Gemfile

Gemfile に下記を追加する。

gem "selenium-webdriver"
gem "nokogiri"

カレントディレクトリの vendor/bundle に gem をインストール。

# インストール先を指定
$ bundle config set --local path "vendor/bundle"

# gem をインストール
$ bundle install
Fetching gem metadata from https://rubygems.org/......
Using bundler 2.2.3
Fetching childprocess 4.1.0
Fetching date 3.2.2
...

ChromeDriver

ヘッドレスブラウザとして Chrome をインストールする。

$ brew install chromedriver

基本的な使い方

fushigidane.rb ファイルに下記を記載する。

$ vi fushigidane.rb
# fushigidane.rb
require "selenium-webdriver"
require "nokogiri"

url = 'https://zukan.pokemon.co.jp/detail/001'

# データ取得用の driver を作成する
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {
    "args" => [ "headless" ]
  }
)
driver = Selenium::WebDriver.for :chrome, capabilities: capabilities

# 指定した URL のデータを取得する
driver.navigate.to(url)
html = driver.page_source

# XPath でポケモンの名前を取得
doc = Nokogiri::HTML.parse(html)
name = doc.xpath("//span[@class='name']/text()")

puts name

実行するとポケモンの名前が表示される。

$ bundle exec ruby fushigidane.rb
フシギダネ

XPath

あとでかくよ