スクレイピング

【R】Rを使ってCSSをスクレイピングしてみる【CSSの説明あり】

r-css

Rを使ってHTMLドキュメントのスクレイピングする【DOMの説明あり】の記事で、HTMLの要素を抽出していきました。

今回はCSSからの抽出です。

CSSの基本的な説明もあるので、復習も兼ねて、読んでください。

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

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

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

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

サイト自体は、めっちゃシンプルですよね。石田基広さんのサイトは、スクレイピングをする際に、とても勉強となります。

今回使うパッケージ

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

CSSとは?

CSSは、HTMLと組み合わせて使用する言語です。

HTMLがウェブページ内の各要素を装飾することができます。

今回スクレイピングするサイトでいうと、文字に色がつけられていいますよね。

その色をつけているのが、CSSです。

HTMLソースコードを表示する

CSSはHTMLと組み合わせて、使われます。

それは、HTMLソースコードを表示すれば、どのようなCSSが使われているか見ることができます。

CSSが他のファイルに書いてある場合もあります。HTMLソースコード内に、CSSが表記されていないこともあります。

HTMLソースコードを表示する方法は

chrome(クロームの場合)

【右クリック】→【ページのソースを表示】

で表示することができます。

他のブラウザを利用している場合でも、同じような感じでいけます。

HTMLドキュメントとHTMLソースコード

左HTMLドキュメント
右HTMLソースコード

csscss

CSSの基本

CSSを抽出する際には、CSSセレクタというものを知っておく必要があります。

まず、CSSは基本このように、表記されます。

セレクタ{プロパティ:値;}

セレクタスタイルを適用する対象を決める
プロパティどのスタイル(プロパティ、今回でいうとcolorプロパティ)を適用するのか
どんな内容を適用させるのか?

p.green { color: green;}

p.greenというセレクタは、p要素にclass属性を定義していて、colorプロパティを使い、greenという内容を適用させています。

p#red { color: red;}

p#redというセレクタには、p要素にid属性を指定して、colorプロパティを使い、redという内容を適用させています。

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

左HTMLドキュメント
右HTMLソースコード

csscss

HTMLでスクレイピングするときと同様に、HTMLドキュメントを読み込みする必要があります。

パッケージの読み込み

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

rvestread_htmlを使って、DOMという構造にしていきます。

DOMにする

test2 <-read_html(“https://IshidaMotohiro.github.io/sample_check/simple2.html”)
test2

{xml_document}

<html>

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

[2] <body>\n <div>\n <p>pタグ</p>\n </div>\n <p class=”green”>classを使 .

 

この結果となります。DOMを知っていれば、なんとなくわかりますよね。

クラスを抽出

クラスを抽出

test2 %>% html_nodes(css = “.green”)
test2

{xml_nodeset (1)}

1]<p class=”green”>classを使った例</p>

 

html_nodesでノードを指定しています。今回指定したのは、greenクラスです。

テキスト部分を抽出

test2 %>% html_nodes(css = “.green”) %>% html_text()

このようにすると、テキスト部分を抽出することができます。

IDを抽出

IDを抽出

test2 %>% html_nodes(css = “#red”)

{xml_nodeset (1)}

[1] <p id=”red”>idを使った例</p>

 

この結果になります。#redでid「red」を抽出してます。

テキスト部分を抽出

test2 %>% html_nodes(css = “#red”) %>% html_text()

1] “idを使った例”

 

テキスト部分も抽出することができます。

まとめ

まとめ

  • CSSはHTMLと組み合わせて使う
  • class、idを指定して、要素を抽出することが出来る

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

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

以上さぎのみや(@gumimomoko)でした。今日もあなたの毒を抜きました。少しは体が軽くなりましたか?

参考文献

¥3,478
(2018/08/21 08:37:19時点 Amazon調べ-詳細)

ABOUT ME
さぎのみや
さぎのみや
Unity専門メディアである【ユニシャー】→「https://unity-code.com」を運営している人です。大森靖子さんが大好きなので《超書手》と名乗っています。 →Polcaで応援Amazonほしいものリスト
ゲーム開発を手助けるメディア「Unishar-ユニシャー」
  • Unityを勉強したい
  • とりあえずUnityを使ってゲームを作りたい

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

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

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