HTML の操作

Rで学ぶWebスクレイピング

Timo Grossenbacher

Instructor

HTML は木構造

<html>
  <body>
    <div>
      <p>最初の段落。</p>
    </div>
    <div>
      実際の段落ではありませんが、
      <a href="#">リンク</a>があります。
    </div>
    <p>div で囲まれていない段落。</p>
  </body>
</html>

HTML のツリー

Rで学ぶWebスクレイピング

HTML は木構造

<html>
  <body>
    <div>
      <p>最初の段落。</p>
    </div>
    <div>
      実際の段落ではありませんが、
      <a href="#">リンク</a>があります。
    </div>
    <p>div で囲まれていない段落。</p>
  </body>
</html>

HTML ツリー 2

Rで学ぶWebスクレイピング

HTML は木構造

<html>
  <body>
    <div>
      <p>最初の段落。</p>
    </div>
    <div>
      実際の段落ではありませんが、
      <a href="#">リンク</a>があります。
    </div>
    <p>div で囲まれていない段落。</p>
  </body>
</html>

HTML ツリー 3

Rで学ぶWebスクレイピング

rvest でツリーをたどる

<html>
  <body>
    <div>
      <p>最初の段落。</p>
    </div>
    <div>
      実際の段落ではありませんが、
      <a href="#">リンク</a>があります。
    </div>
    <p>div で囲まれていない段落。</p>
  </body>
</html>
html <- read_html(html_document)

html_children(html)
{xml_nodeset (1)}
[1] <body>\n    <div>\n  < ...
html %>% html_children()
html %>% html_children() %>% html_text()
[1] "\n    \n      最初の段落。\n   
\n    \n      実際の段落ではありませんが、\n      
リンクがあります。\n    \n    div で囲まれていない段落 ...
Rで学ぶWebスクレイピング

セレクタでノードへ移動

<html>
  <body>
    <div>
      <p>最初の段落。</p>
    </div>
    <div>
      実際の段落ではありませんが、
      <a href="#">リンク</a>があります。
    </div>
    <p>div で囲まれていない段落。</p>
  </body>
</html>
html <- read_html(html_document)

html %>% html_element('body')
{xml_nodeset (1)}
[1] <body>\n    <div>\n  < ...
html %>% html_elements('div p')
{xml_nodeset (1)}
[1] <p>最初の段落。</p>
Rで学ぶWebスクレイピング

セレクタでノードへ移動

<html>
  <body>
    <div>
      <p>最初の段落。</p>
    </div>
    <div>
      実際の段落ではありませんが、
      <a href="#">リンク</a>があります。
    </div>
    <p>div で囲まれていない段落。</p>
  </body>
</html>
html %>% html_elements('p')
{xml_nodeset (2)}
[1] <p>最初の段落。</p>
[2] <p>div で囲まれていない段落...</p>
html %>% html_elements('div') %>% 
    html_elements('p')
{xml_nodeset (1)}
[1] <p>最初の段落。</p>
Rで学ぶWebスクレイピング

属性を抽出する

html %>%
    html_element('a') %>%
    html_attr('href')
[1] #
html %>%
    html_element('a') %>%
    html_attrs()
href 
 "#"
Rで学ぶWebスクレイピング

さあ、始めましょう!

Rで学ぶWebスクレイピング

Preparing Video For Download...