スクレイピングごにょごにょ - 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
あとでかくよ