最近發現到 rvest 這個套件,直接支援 ccs 與 xptah 選取,安裝 rvest 後,在啟用 rvest 時也會順道加入支援 pipeline 編寫,可以有效避免恐怖的巢狀地獄…
rvest 使用如同一般網路爬蟲技術,流程如下所示:
- 要捉的網頁真實的網址是什麼 --url =
???
- 把網頁捉下來 --html( )
- 解析(parse)網頁,選取所需內容(使用 CSS 或 XPATH ) --html_nodes()
- 過濾掉其他雜質 -- 此例中我們只留下純文字就好 不留下超連結 html_text()
首先我們可以使用 chrome 中的開發者工具 或是 Firefox 中的 Firebug 來協助我們進行選取,可以發現用以下的語法就能正確捉取我們所要的資料…
- css 選取語法 .picword
- xpath 選取語法 //*[@id='newslistul']/li/a
此處以 css選取(html_nodes函數)舉例,並將資料存成 dataframe 格式,以利串接至資料庫中:
library(rvest)
news_url="http://news.ltn.com.tw/list/BreakingNews"
title_css = html(news_url) %>% html_nodes(".picword") %>% html_text()
my_news = data.frame(title = title_css)
View(my_news)
然後你就會有2個重大的發現:(1)網路爬蟲的入門也蠻簡單的啊~~
(2)即時新聞大部份都不是很重要~~
備註1:使用 xpath 選取
將html_nodes(".picword")以html_nodes( xpath = "//*[@id='newslistul']/li/a")取代即可
備註2: 想要取捉每篇即時新聞的網址,以利後續捉取內文的話呢??
my_news =
data.frame(
title = html(news_url) %>% html_nodes(".picword") %>% html_text() ,
title_href = html(news_url) %>% html_nodes(".picword") %>% html_attr( "href") ,
stringsAsFactors=FALSE)
備註3: 套件作者 Github https://github.com/hadley/rvest
沒有留言:
張貼留言