札幌とか、Rによる自動データ収集とか
あ、どーも僕です。
札幌とか
昨日まで札幌へ行っておりました。パンケーキと寿司とラーメンを食べて、 動物園と水族館と献血へ行って、FOSS4GとDBASに参加したりしてました。
札幌へ行ったメインの理由はFOSS4Gです。
Jiriさんや、マピオンの清水さんによる、いまどきなベクタータイルの作り方と配信体制は、 とても勉強になりました。これを機会に我流を改めます。 京都大学の堤田先生によるGoogleEarthEngineの利用例を聞けたのは良かったです。 全球レベルのデータが一瞬で処理されていく様は信じられませんでした。 マンケンドール検定って久しぶりに聴いたので懐かしかったです。 長野県の戸田さんが開発したCS立体図の作成方法が公開されていることで、 勉強会があったりWeb地図タイル化があったり海底への拡張版が開発されている 話には興奮しました。ノーザンシステムの一行はハッカー集団、という感じで かっこよかったです。
知らないことばかりだったので、情報を消化仕切れていないです。 これから頑張ります。
多くの皆さんが発表された技術をgithubで 公開しておりました。国土地理院も地理院地図をgithubに公開しており、 この業界の人たちのマインドは本当に尊敬できます。
Rによる自動データ収集とか
先週、Rによる自動データ収集を一周しました。練習問題は解いていません。 ここでは概要、感想、気になる点を載せます。
Rによる自動データ収集: Webスクレイピングとテキストマイニングの実践ガイド
- 作者: Simon Munzert,Christian Rubba,Peter Meissner,Dominic Nyhuis,石田基広,工藤和奏,熊谷雄介,高柳慎一,牧山幸史
- 出版社/メーカー: 共立出版
- 発売日: 2017/06/08
- メディア: 単行本
- この商品を含むブログ (1件) を見る
概要
Rによる自動データ収集では、Web技術とはからはじまり、RによるWebスクレイピングの方法と、 Rを用いた可視化や分析技術(テキストマイニング)を解説しています。また、Webスクレイピング時のマナーなど、 分析技術以外についても言及されております。
スクレイピングにはRCurlというcurlコマンドをRから使うパッケージを使っています。 httrパッケージには本文で少し触れられています。rvestパッケージはサポートページにある 訳者らのスクリプトでは使われていました。
詳しい目次は共立出版のHPからどうぞ. サポートページもあります。
Rによる自動データ収集―Webスクレイピングとテキストマイニングの実践ガイド―
すでにブログに感想を書かれている方がおられます。
感想
Webスクレイピングには、Webデータを配信、抽出、保存する技術がそれぞれ必要であるとしている 導入のストーリーがわかりやすく、600ページが必要となったは納得でした。
周辺技術を含めてWebスクレイピングを学べたのは大きかったと思います。 一方で本として完成度が8割かなという印象です。 読んでいて気になる点が多くストレスが大きかったです。 本書の売りは原著のダメな部分を修正してくれていることだったのでわ?という感じです。
気になった点
個人的に読んでいて気になった点です。わたしの技術力の問題でもありますが、 こんなんでも止まる人がいるよ、ということで。
p.33の中段の囲い
Cosmic Sans MSをダブルでなくてシングルで囲む
p.70の図3.4
2行目の<>内に、"http://www.w3.org/Graphics/SVG1.1/DTD/svg11.dtd"が必要
8行目のfont-weghtはfont-weight
p.79の下段
XMLGetAttrでなくxmlGetAttr
p.108の表4.2の主要なXpath関数の概要
この表の戻り値はすべて特殊例。自分で手を動かしながらだとわかるが、この表だけを見たときには迷う。特にcount関数の戻り値に???となり読むのが止まる。
p.113の上段
次の文章がわかりずらかった。=演算子を使うという話なのはずなのに、この文だと包含なので混乱した。
以下で、ドキュメント内においてdate属性に引用符で囲まれたOctober/2011を含むすべての<div>ノードを選択する
原著は次。値がOctober/2011であるdate属性を含む<div>ノードを選択すれば、October 2011に書かれた引用文を含んだdivが選択できているという感じ?
To select all <div> nodes in the document, which contain quotes written in October 2011, that is, contain an attribute date with the value October/2011, we can write
p.163の中段
ハンドルを閉じるは、ハンドルを複製するの間違い
p.166の中段
「dupCurlHandle()を使うと、・・・」の下にあるコマンドがdupCurlHandleを使ってなくて、 その次にでてくるコマンドと同じになっている。原著ではdupCurlHandleのコマンドになっている。
p.166の中段
「セッション全体に適用されるグローバル設定には二つある」のセッションが何を指しているのかわからなかった。
p.286の中段
わたしの環境ではhtmlParseは失敗したため、rvest::read_htmlを使いました
p.309の下段
getURLを実行してSSLのエラーでるところなのに、代入操作でSSLエラーが出力されている。
p.312の上段
シングルクォーテーションを二つ書くことで、ダブルクォーテーションを表現しているように見える。 読んでいて、うっ、となるのだがなんというフォントなのだろうか….
これ以降に同じものが多数でてくる。
p.315 上段
「それを踏まえ、・・・」の後のコマンドが飛んでる。結果だけが書かれている。
p.319 9.1.9.2 SelenuimとRwebdriverパッケージ
Windowsでは動かなかった。できた人がいたら教えてください。 個人的にそのうちlinuxで試す。
p.330 中段
getForm関数の引数として与えるURLが入ったオブジェクトは、weather_urlでなく、forecast_url
p.332 9.1.11 OAuthによる認証
わからなかったので保留。いつか試す。
p.348 Rとの親和性
「とはいえ、Webサービス・・・」はRの話でなくて、WebAPIを使ったデータ収集の話だと思う。つまり、「とはいえ」は「RがWebAPIを使うのに適してない、とはいえ」ではなくて、 「WebAPIにも欠点がある、とはいえ」という意味のはず。
p.369
10章はスクレイピングする部分が本文とおりに行かないが、それっぽいことはできる。
p.371 上段
748件でなくて747件。が二カ所
p.374 下段
Corpurs関数を使って作成したものはその後のmeta関数を使った処理ができなかった。代わりにVCorpusを使うといけた。
p.401 下段
図10.2を見て、トピック1の事後分布は「Business, Innovation, and Skills」が大きいとしているが、 「Ministry of Defence」の間違いだと思う。
p.415 下段
「writing progress to a log file」という見出しが抜けている。
p.416 中段
「ここでは3で初期化するところから始める」という一言の意味がよくわらかない。
p.425~ 第3部
第3部は本文は置いといて、基本的にはサポートページのスクリプトを使う。 ただし、サポートページのスクリプトも動かない場合や、逆に本文の方が動く場合がある。 動いたり動かなかったりするのがしんどかったので、 追試はせずに第3部は読み物とした。
環境
Session info ------------------------------------------------------------------------------- setting value version R version 3.4.0 (2017-04-21) system x86_64, mingw32 ui Rgui language (EN) collate Japanese_Japan.932 tz Asia/Tokyo date 2017-07-02 Packages ----------------------------------------------------------------------------------- package * version date source assertthat 0.2.0 2017-04-11 CRAN (R 3.4.0) base * 3.4.0 2017-04-21 local bindr 0.1 2016-11-13 CRAN (R 3.4.0) bindrcpp 0.2 2017-06-17 CRAN (R 3.4.0) bitops * 1.0-6 2013-08-17 CRAN (R 3.4.0) broom 0.4.2 2017-02-13 CRAN (R 3.4.0) cellranger 1.1.0 2016-07-27 CRAN (R 3.4.0) colorspace 1.3-2 2016-12-14 CRAN (R 3.4.0) compiler 3.4.0 2017-04-21 local datasets * 3.4.0 2017-04-21 local DBI 0.7 2017-06-18 CRAN (R 3.4.0) devtools * 1.13.2 2017-06-02 CRAN (R 3.4.0) digest 0.6.12 2017-01-27 CRAN (R 3.4.0) dplyr * 0.7.1 2017-06-22 CRAN (R 3.4.0) forcats 0.2.0 2017-01-23 CRAN (R 3.4.0) foreign 0.8-69 2017-06-21 CRAN (R 3.4.0) fortunes * 1.5-4 2016-12-29 CRAN (R 3.4.0) ggplot2 * 2.2.1.9000 2017-06-01 Github (tidyverse/ggplot2@f4398b6) ggsci * 2.7 2017-06-12 CRAN (R 3.4.0) glue 1.1.1 2017-06-21 CRAN (R 3.4.0) graphics * 3.4.0 2017-04-21 local grDevices * 3.4.0 2017-04-21 local grid 3.4.0 2017-04-21 local gtable 0.2.0 2016-02-26 CRAN (R 3.4.0) haven 1.0.0 2016-09-23 CRAN (R 3.4.0) hms 0.3 2016-11-22 CRAN (R 3.4.0) httr * 1.2.1 2016-07-03 CRAN (R 3.4.0) jsonlite * 1.5 2017-06-01 CRAN (R 3.4.0) lattice 0.20-35 2017-03-25 CRAN (R 3.4.0) lazyeval 0.2.0 2016-06-12 CRAN (R 3.4.0) lubridate 1.6.0 2016-09-13 CRAN (R 3.4.0) magrittr 1.5 2014-11-22 CRAN (R 3.4.0) maps * 3.2.0 2017-06-08 CRAN (R 3.4.0) memoise 1.1.0 2017-04-21 CRAN (R 3.4.0) methods * 3.4.0 2017-04-21 local mnormt 1.5-5 2016-10-15 CRAN (R 3.4.0) modelr 0.1.0 2016-08-31 CRAN (R 3.4.0) modeltools 0.2-21 2013-09-02 CRAN (R 3.4.0) munsell 0.4.3 2016-02-13 CRAN (R 3.4.0) nlme 3.1-131 2017-02-06 CRAN (R 3.4.0) NLP * 0.1-10 2017-02-21 CRAN (R 3.4.0) parallel 3.4.0 2017-04-21 local pkgconfig 2.0.1 2017-03-21 CRAN (R 3.4.0) plyr 1.8.4 2016-06-08 CRAN (R 3.4.0) psych 1.7.5 2017-05-03 CRAN (R 3.4.0) purrr * 0.2.2.2 2017-05-11 CRAN (R 3.4.0) R6 2.2.2 2017-06-17 CRAN (R 3.4.0) Rcpp 0.12.11 2017-05-22 CRAN (R 3.4.0) RCurl * 1.95-4.8 2016-03-01 CRAN (R 3.4.0) readr * 1.1.1 2017-05-16 CRAN (R 3.4.0) readxl 1.0.0 2017-04-18 CRAN (R 3.4.0) reshape2 1.4.2 2016-10-22 CRAN (R 3.4.0) rjson * 0.2.15 2014-11-03 CRAN (R 3.4.0) RJSONIO * 1.3-0 2014-07-28 CRAN (R 3.4.0) rlang 0.1.1 2017-05-18 CRAN (R 3.4.0) rvest * 0.3.2 2016-06-17 CRAN (R 3.4.0) scales 0.4.1 2016-11-09 CRAN (R 3.4.0) sf * 0.5-1 2017-06-23 CRAN (R 3.4.0) slam 0.1-40 2016-12-01 CRAN (R 3.4.0) SnowballC * 0.5.1 2014-08-09 CRAN (R 3.4.0) stats * 3.4.0 2017-04-21 local stats4 3.4.0 2017-04-21 local stringi 1.1.5 2017-04-07 CRAN (R 3.4.0) stringr * 1.2.0 2017-02-18 CRAN (R 3.4.0) tibble * 1.3.3 2017-05-28 CRAN (R 3.4.0) tidyr * 0.6.3 2017-05-15 CRAN (R 3.4.0) tidyverse * 1.1.1 2017-01-27 CRAN (R 3.4.0) tm * 0.7-1 2017-03-02 CRAN (R 3.4.0) tools 3.4.0 2017-04-21 local topicmodels * 0.2-6 2017-04-18 CRAN (R 3.4.0) udunits2 0.13 2016-11-17 CRAN (R 3.4.0) units 0.4-5 2017-06-15 CRAN (R 3.4.0) utils * 3.4.0 2017-04-21 local withr 1.0.2 2016-06-20 CRAN (R 3.4.0) XML * 3.98-1.9 2017-06-19 CRAN (R 3.4.0) xml2 * 1.1.1 2017-01-24 CRAN (R 3.4.0)