スクレイピング

【R】Rを使ってHTMLドキュメントのスクレイピングする【DOMの説明あり】

scraping

複雑なHTMLサイトから、スクレイピングするのは大変です。

普通に、意味わかんないサイトがあります。

そこで簡単なHTMLで構成されたサイトから、スクレイピングしてみます。

もしエラーがおきたらteratailで質問してみてください。エンジニアさんやプログラマーさんが教えてくれますよ。

スクレイピングするサイト

石田基広さんのサイトを使います。一度、ご覧ください。

>>>今回スクレイピングするサイト

「Rによるスクレイピング入門」という本を参考にさせていただきます。

サイト自体は、めっちゃシンプルですよね。

だからこそ、スクレイピングの勉強となります。

今回使うパッケージ

パッケージ名説明
rvestWebページから情報を抽出する作業を簡単にしてくれる
dplyrデータフレームを簡単に操作できる(パイプ演算子を使う)
magrittrオブジェクトの一部の抽出または置換(パイプ演算子を使う)

DOMを理解する

サイト内のURLを取得したい!

テキスト部分を取得したい!

と考えても、HTMLドキュメント(サイトにアクセスして表示されるもの)のまま、Rで読み込むことはできません。

htmlドキュメントをツリー構造にした「DOM」というものから、スクレイピングします。

HTMLドキュメント

DOM


スクレイピング

このような流れとなります。

大事な部分なので、「DOM」について見ていきます。

DOMはHTMLドキュメントのツリー構造化したもの

html

DOMはHTMLドキュメントの要素をツリー構造化したものです。

上の図をご覧ください。

ツリー構造のようになっているのがなんとなくわかりますよね。

【html】という木に【head】という枝があり、その枝から【title】という枝が存在している。

【html】という木に【body】という枝があり、その枝から【h1】【a】という枝が存在している。

また、【html】は【head】の親要素、【head】は【html】の子要素のように、親子関係で言われることもあります。

要素をノードという

もう一度、先ほどの図をご覧ください。

DOMでは、HTMLドキュメント内の要素をノードいいます。【html】【body】【title】【a】【h1】すべて、ノードと言います。

ノード、子ノード、 親ノード、 兄弟姉妹ノードなどノードによって名前は違いますが、説明を省きます(今回は重要ではない)

スポンサーリンク

HTMLドキュメントをDOMにして読み込む

DOMの説明が長くなりましたが、HTMLドキュメントを読み込んでいきます。

先にパッケージを読み込んでいきます。

ここにボックスタイトルを入力

library(rvest)
library(dplyr)
library(magrittr)

read_html()でDOMという構造にしていきます。

DOMにして読み込む

test <- read_html(“https://ishidamotohiro.github.io/sample_check/simple.html”)

test 

 

▼のような結果になります。

<html>という木に<head>、<body>という枝があるようなことがわかれば、大丈夫。

{xml_document}

<html>

[1] <head>\n<meta http-equiv=”Content-Type” content=”text/html; charset=U …

[2] <body>\n <h1>大見出し</h1>\n <a href=”http://www.okadajp.org/RWiki/ …

DOMにできれば、要素を抽出することが可能になります。

大見出し(h1)要素の抽出

要素の抽出

test %>% html_nodes(“h1”)

test

{xml_nodeset (1)}
[1] <h1>大見出し</h1>

という結果になります。html_nodes()でh1ノードを指定しています。これによって、h1要素全体を取り出すことが可能です。

要素の値を抽出

test %>% html_nodes(“h1”) %>% html_text()

test

[1] “大見出し”

という結果になります。h1要素の中の要素(テキスト)の部分を、抽出したということですね。

リンクのURLの取り出し

URLを取り出します。

リンクのURL取り出し

test %>% html_nodes(“a”) %>% html_attrs()

[[1]]
            href 
“http://www.okadajp.org/RWiki/”

[[2]]
      href       target 
“http://rmecab.jp”      ”_blank”

html_nodes()でa要素を抽出して、html_attrs()でURLを取り出しています。

属性の値だけを抽出

属性の値だけ抽出

test %>% html_nodes(“a”) %>% html_attr(“href”)

[1] “http://www.okadajp.org/RWiki/” “http://rmecab.jp”

この結果となります。

hrefという属性の値を抽出することが出来ます。

指定されたノードが出てくる最初の要素を抽出

指定されたノードを出てくる最初の要素

test %>% html_node(“a”)

<a href=”http://www.okadajp.org/RWiki/”>

という結果になります。html_node()で指定したノードが出てくる、最初の要素を抽出します。

番号指定して属性の値を抽出

1番目に出てくるURLを抽出、2番目に出てくるURLを抽出など、決めることができます。

magrittrパッケージのextract()を使います。

番号指定して属性の値を抽出

test %>% html_nodes(“a”) %>% html_attr(“href”) %>% extract(1)

“http://www.okadajp.org/RWiki/”

この結果になります。html_nodesでa要素を抽出して、URLを取り出し、その一番目を表示といった感じです。

extract(1)extract(2)にすれば、二番目のURLを抽出することができます。

まとめ

まとめ

  • スクレイピングにはDOMを使う
  • ノードを使って、抽出する
  • %>%演算子を使うと、わかりやすい

●ゼロから始めるR言語に戻る

R言語
【随時更新】ゼロから始めるR言語【2018/3/30日更新】RとRStudioのインストールからグラフ・図・分析、テキストマイニング、スクレイピングなどをやっていきます。ネットでRを勉強したい人は是非ご覧ください。...

参考文献

とてもスクレイピングをする際に参考になる本です。

 

データサイエンティストになりたいなら

  • データサイエンティストになりたいけど、漠然とRの勉強をしている

もしそうならば、戦略的に勉強しましょう。戦略的に勉強しなければデータサイエンティストになるのは夢のままになってしまう可能性があります。

データサイエンティストになるためのおすすめの勉強方法・講座を3つご紹介します。

①通勤講座でデータサイエンティストの講座を受ける

  • ビジネスにデータを活用したいが方法が分からない。
  • ビックデータをどう扱えばよいか分からない。
  • データサイエンティストになりたいが、どうすればいいのか分からない。

このような場合、データサイエンティスト基礎講座 を受けてるのはどうでしょうか。動画によって、上のような悩みを解決してくれます。

まずデータサイエンティスト の基礎を学んでみて、ビジネススキルが足りなかったらUdemy で勉強するのが良いです。

いまなら10%クーポンもありますし、無料の動画もあります。今行動しないと一生やりませんので、もう少し下を見てからで良いのでご覧ください。

▼まずデータサイエンティストの基礎を学ぶ▼

データサイエンティストの基礎を学ぶ>>

②Udemyのデータサイエンティスト講座を受ける  

「Udemy」も動画で学ぶタイプの講座です。データサイエンティストになるための講座がそこそこあります。

通勤講座とちがうのが安さです。どちらも内容の質が良いことは間違えないのですが、Udenyは安めです。

「自分この部分の知識がないな」と思ったときの補強でも使えますね。一度講座をとって気に入らなかったら、全額返金できます。

▼データサイエンティストの基礎を学んだり、知識の補強をする▼

 Udemyのデータサイエンティスト講座を受ける>>

③データサイエンティスト育成スクールにいく

本気でデータサイエンティストになりたいなら、このスクールに行くのがおすすめです。

データサイエンティストに必要な知識は膨大です。統計学、機械学習、人工知能、データベース、プログラミング、ビジネススキルなどなど。

その知識をデータサイエンティストとしての経験がある先生たちが、オフラインで教えてくれます。

動画です。ご覧ください。

どうですか、めっちゃ良いですよね。ここは他の講座と違うなと思った部分があるのですが、転職支援もしてくれます。

さらに

データサイエンティスト全コースを一括で申し込んでいただいた方のみ、
ブートキャンプ終了時にご満足いただけない場合は受講料を全額返金します。

返金保障もあります。

もしまだ心配な方は説明会もありますので、いって見てください。

  • 未経験からデータサイエンティスト目指せる(Rを触っているあなたならもっと安心)
  • 返金保障あり
  • データサイエンティストに必要な知識を学べる
  • オフライン
  • データサイエンティスト経験がある先生に質問ができる
  • 転職支援あり

もう一度言います。本気でデータサイエンティストを目指すならおすすめです。

▼データサイエンティストになる▼

未経験からデータサイエンティストになる>> 

どれにしますか

①と②の場合はまず基礎を学んで、足りないところを補充して転職という感じです。③は転職支援もあるので安心です。

思いたったときに行動しなければ意味がありません。将来的にデータサイエンティストになりたいなら今すぐ行動しましょう。

データサイエンティストの基礎を学ぶ
通勤講座のデータサイエンティストの講座を受ける  

データサイエンティストの基礎を学んだり、知識の補強をする
Udemyのデータサイエンティスト講座を受ける  

本気でデータサイエンティストを目指す
データサイエンティスト育成スクールにいく

 

ABOUT ME
さぎのみや
さぎのみや
ゲーム開発を手助けるメディア【ユニシャー】を運営しているさぎのみやの個人ブログです。自分の考えや役にたったことを書いております。自分の芯がある人が好きです。→Amazonほしいものリスト
ゲーム開発を手助けるメディア「Unishar-ユニシャー」
  • Unityを勉強したい
  • とりあえずUnityを使ってゲームを作りたい

このような悩みを解決してくれる、アクセス急上昇中のUnityメディア「Unishar-ユニシャー」

Unityでのゲーム開発に役立つことばかりです。

Unity専門メディア「Unishar-ユニシャー」→