XPATH 入門

R 的網頁爬蟲

Timo Grossenbacher

Instructor

XML Path Language

  • 以 HTML 樹的路徑來表達,例如 //div/p[@class = "blue"](等同 div > p.blue
  • 可依其他節點的屬性選取節點
  • 可進行更進階、可自訂的選取
  • 例如:依子節點屬性選取元素,如僅選取含有 classspeciala 節點之 div 元素
R 的網頁爬蟲

一個簡單的 HTML 樹,選取所有 p 元素

html %>%
    html_elements(xpath = '//p')
# CSS selector equivalent: p
html %>%
    html_elements(xpath = '//body//p')
# CSS selector equivalent: body p
html %>%
    html_elements(xpath = '/html/body//p')
# CSS selector equivalent: html > body p
R 的網頁爬蟲

一個簡單的 HTML 樹,只選取位於 div 之下的 p 元素

html %>%
    html_elements(xpath = '//div/p')
# CSS selector equivalent: div > p
R 的網頁爬蟲

一個簡單的 HTML 樹,只選取含有 a 子節點的 div

html %>%
    html_elements(xpath = '//div[a]')
# CSS selector equivalent: none
R 的網頁爬蟲

語法:軸、步驟與謂詞

  • 軸(axes):///
  • 步驟(steps):如 spana 等 HTML 類型
  • 謂詞(predicates):[...]
  • 範例://span/a[@class = "external"](CSS:span > a.external
  • 範例://*[@id = "special"]//div(CSS:#special div*#special div
R 的網頁爬蟲

一起來練習吧!

R 的網頁爬蟲

Preparing Video For Download...