こんなもんさっさと出来るだろうと思ったら、案外つまづいたので手順だけまとめます。
書いてる人はMojave 10.14.4です。
なるべく各プラットフォームのパッケージマネジャをそのまま使います。
使うもの:rocker/tidyverse のコンテナ
Dockerかもん。sudoを有効に
お好みでdockerfile弄る - https://qiita.com/kazutan/items/1af4d0c4defb4de4b7fb
docker run --rm -p 8787:8787 -e PASSWORD=PASSWORD -e ROOT=TRUE rocker/tidyverse
起動したら http://localhost:8787 を開く
id: rstudio
pass: PASSWORD
こっからDocker内:RStudio まずターミナル
sudo有効になってるので、ターミナルから下記を撃ちまくる
RStudioのターミナルから 1 - apt
sudo apt-get install -y chromium chromedriver fonts-noto-cjk default-jre curl
RStudioのターミナルから 2 - Selenium stand alone server
https://www.seleniumhq.org/download/ から最新版を。
2019/5時点は "3.141.59" / selenium-server-standalone-3.141.59.jar
https://bit.ly/2TlkRyu がいつも最新版にリンクされてるらしい
一撃でダウンロードからの、乱暴に起動
# ひっと えんど
curl -O `curl https://bit.ly/2TlkRyu | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*"`
# らーん
java -jar selenium-server-standalone*
こっからR
2019年、pacman使わないのは犯罪となった
## このプロジェクト用
pacman::p_load(xml2, rvest, RSelenium)
## いつもの (load below project specifics, to avoid function masking issues)
pacman::p_load(dbplyr, tidyverse, jsonlite, lubridate, stringr, readr)
extraCapabilities設定 / ファイルの自動ダウンロードもついでに設定
eCaps <- list(
chromeOptions =
list(
prefs = list( # ダウンロード時にダイアログ出さない設定
"profile.default_content_settings.popups" = 0L,
"download.prompt_for_download" = FALSE,
"download.default_directory" = "~/extract_temp"
),
# この'--no-sandbox'が無いとdockerコンテナごと設定変えないといけなくなる
args = c('--no-sandbox', '--headless', '--disable-gpu', '--window-size=1200,1800')
)
)
# 起動済みのSeleniumサーバに接続 (rsDriverで直起動も出来るはず、なんだけどなんか機能しない)
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4444L,
browserName = "chrome",
extraCapabilities = eCaps)
起動すっぞ
remDr$open()
#こんな感じでログイン処理まとめた
win3login()
削るぞ削るぞ
jan_list <- get_janlist() # 欲しいぞリスト取得
# Test run - single item
item <- win3_extract_item("9784199801907")
# 1万件とか余裕だった。サーバ不可に気をつけて適度にウェイト入れる
results <- sapply(jan_list$jancode[1:10], win3_extract_item)
注意点
google-chrome入れちゃうと「古いバージョンにしろ(2019/5時点で73以下)とか言われてさまよう事になるので初めからchromiumだけ使う。
はじめて Qiita書きました。変なところあったら優しく教えてください。(びびり)
次はcronRで自動実行やります:
https://cran.r-project.org/web/packages/cronR/README.html
もちょい実用的なハウツーみたいなのも書きました:
https://qiita.com/taiyodayo/items/fca8f9185a684221a799