R 文字探勘 – 網頁爬蟲

文字探勘 ( Text mining ) 通常用在擷取非結構化資料,我們的生活中存在著許多非結構化的資料,像是新聞、網路論壇 PTT、Mobile01 、社群網站 Facebook、 Twitter 等等文字相關的資料。透過 R 來爬蟲能夠輕鬆地將望頁上想要的文字資料,數字資料輕鬆地抓取儲存下來,今天要介紹的是如何透過 R 來爬網頁資料。

 

套件

所使用的套件是 RCurl, XML 兩個套件,RCurl 可以下載網頁原始資料到 R 裡面。XML 可以解析整理想要的特別文字或數字,因為網頁的原始資料會包含 html 格式的文字,使用 XML 可以幫忙整理出想要的資料。

 

R實作 (這個實作已經失效,請看後記練習)

在這裡示範抓取 Bloomberg 彭博社 market 新聞的標題。在網頁點右鍵-檢查可以看到網頁的 html 編碼,然到找到我們想要抓的方塊文的字的名字,例如這裡要抓的資料是  <h1 class=’top-news-v3-story-headline’> 的純文字資料,以小編在 2017-09-15 時做的結果如下。

install.packages("RCurl","XML")
library(RCurl)
library(XML)

url <- "https://www.bloomberg.com/markets"
html <- htmlParse(getURL(url, .encoding = "utf-8"), encoding = "utf-8")
xpathSApply(html, "//h1[@class='top-news-v3-story-headline']", xmlValue)

[1] "  Money Is Still Flowing Through China's Economy  "                  
[2] "  Reported Explosion And Stampede At London Subway Station  "        
[3] "  U.S. Equities Go Back on Menu With Biggest Inflows in 13 Weeks  "  
[4] "  Tata Feud With Mistry Deepens With Plan to Change Holding Firm  "  
[5] "  NASA’s Cassini Spacecraft At Saturn Nears Fiery Finale  "          
[6] "  Murdoch Seeks to Beat CBS Bid for Australian Broadcaster Ten  "    
[7] "  Qantas's Alan Joyce Is Asia Pacific's Best-Paid Airline CEO  "     
[8] "  U.K. Pub Boss Rails Against EU ‘Oligarchs’ in Brexit Broadside  "  
[9] "  China's Bitcoin Crackdown Has Some Stocks Taking a Beating Too  "  
[10] "  Nissan, Renault, Mitsubishi Deepen Alliance With Electric Push  "  
[11] "  Typhoon Doksuri Batters Central Vietnam With Winds, Rains  "       
[12] "  Philippine Growth Will Exceed 6% in 2018, Moody's Says  "          
[13] "  China Banks Face Funding Challenge as Deposit Base Eroded  "       
[14] "  Oldest Philippine Conglomerate Ayala to Invest in Green Vehicles  "
[15] "  Everything But the Chicken Farm: Guide to Frothy Bond Sales  "     
[16] "  Japan's Haven Status Shielded by Role as World's Top Creditor  "   
[17] "  Deutsche Bank Presses On With Wealth Business Consolidation  "     
[18] "  The Race to Run a Two-Hour Marathon  "                             
[19] "  BOE Hawks May Be Aiming For Reset, Not Lift Off  "                 
[20] "  Nowcasting Tells the Story: Norway's Been Fixed  "

結論

在 R 實作爬蟲時如果是爬中文資料時,有時候會遇到編碼的問題,在函數後方加入 encoding = “utf-8″ 就可以解決這個問題。另外就是在大量爬某個網站時,密集的訪問網站會視為一種 DDoS攻擊,要加入 sys.sleep() 讓爬蟲程式休息一下,不要把別人的網站弄掛了。

後記

R 實作因為 Bloomberg 的網頁更新,導致沒有辦法使用原本的方式爬蟲,在 R 文字探勘 - 網頁爬蟲(2) 中使用另外一個套件練習爬 Bloomberg。在這裡試著練習使用 Rcurl+XML 爬 鉅亨網 的新聞標題。

install.packages("RCurl","XML")
library(RCurl)
library(XML)

url <- "https://news.cnyes.com/news/cat/headline" 
html <- htmlParse(getURL(url, .encoding = "utf8"), encoding = "utf8")
xpathApply(html, "//div[@class='_1xc']/h3", xmlValue)


[[1]]
[1] "國喬受惠SM價格走揚 7月營收創近5年單月新高"

[[2]]
[1] "〈財報〉Jimmy Choo加持 Kors財報超越分析師預期"

[[3]]
[1] "獲利和用戶大減 棋牌遊戲商Microbeam擬港股上市估值堪憂"

[[4]]
[1] "顧料穩出貨+調價反映成本 康舒Q3營收、毛利率看季增"

[[5]]
[1] "意外!紐西蘭央行延長低利率前景 紐幣急貶"

[[6]]
[1] "外資看好嘉聯益成長動能 重申「買進」目標價79元"

[[7]]
[1] "金管會擬祭4大策略 引導保險業投入5+2產業 拚新增投資1500億元"

[[8]]
[1] "中國7月CPI年增2.1% PPI年增4.6% 均高於預期"

[[9]]
[1] "和大7月營收創新高 客戶需求持強 Q3可望創高"

[[10]]
[1] "摩根大通:為打贏貿易戰 不能排除川普會拋售美元當武器"

[[11]]
[1] "研究員:三星GalaxyS7出現資安問題"

[[12]]
[1] "〈特斯拉炒私有化〉最好別鬧!傳SEC已展開調查 若是騙局 馬斯克恐賠巨額又背刑事責任"

[[13]]
[1] "【馮冠華專欄】貿易戰雖再升温,港股仍可審慎樂觀"

[[14]]
[1] "台灣主要報紙重要財經新聞 2018年8月9日"

[[15]]
[1] "李小加暗示今年W股上市不會很多 明年考慮併購外國交易所"

[[16]]
[1] "盤前財經大事搶先讀2018年8月9日"

[[17]]
[1] "台股盤前─被動元件目前以築底為主 但指數今將獲重大突破"

[[18]]
[1] "亞洲業務上半年多賺14% 傳平保想買保誠不賣"

[[19]]
[1] "鐵塔8/22納MSCI 護盤或維持一週 穩價期後恐有賣壓"

[[20]]
[1] "谷歌Pixel3XL似乎保有「劉海」及「下巴」"

[[21]]
[1] "紐約匯市—憂心脫歐 英鎊貶至一年低點 恐美加深制裁 俄盧布跌至21個月低點"

[[22]]
[1] "能源盤後─美原油庫存達7月新高 美中貿易戰升溫 油價跌"

[[23]]
[1] "投資人退場 葛洛斯債券基金資產下降至2014年11月以來低點"

[[24]]
[1] "美股盤後─Nasdaq小幅收高 連七天上漲 道瓊則收低45點"

[[25]]
[1] "貴金屬盤後─美元與債券殖利率回檔 黃金收高2.70美元"

[[26]]
[1] "歐股盤後─泛歐指數收低0.2% 反應企業獲利與貿易緊張"

[[27]]
[1] "爭執加劇 沙國一氣之下 大賣加拿大資產"

[[28]]
[1] "美股盤中─中國對美國商品加稅 股市再度受到壓力"

[[29]]
[1] "群光Q2獲利季增逾3成 EPS1.17元 Q3迎旺季營收戰新高"

[[30]]
[1] "國巨再買555張庫藏股 迄今共砸近20億元買回 執行率破5成"

 

3 comments

  1. 這位大大您好~
    初來貴寶地,有些疑惑想請教大大。
    對於一個初學者而言,若想利用程式語言來實行程式交易,又或者只是單純的抓取網頁特定文字~諸如三大法人每日買賣超、融資使用率等、、、
    不知哪種語言較適合初學者入門?
    彷間查了下python與R好像是新潮流,那以往的C或VBA等不知比較起來何者較容易入手?
    另外就是倘若python與R二者取一,何者能將抓得資料匯入EXCEL(好像查過兩者皆可?!)
    但不知道可不可用python與R直接監視盤中資訊,來做AI下單之用?感謝~~

    Liked by 1 person

      1. 您好,因為我自己使用過的程式語言只有 R, SAS, MATLAB. 所以可能沒辦法給你太全面的建議。像是 C, Excel VBA, python 如果能辦到你想要做的事,也都是很好的工具。
        網路爬蟲其實不難,因為都有現成的套件可以使用,困難的是要了解 HTML 的結構,抓到你想要的資料。
        其實寫程式的邏輯才是最最重要的,用什麼語法都是大同小異的工具,選擇一個語言將他摸熟,你就可以做到任何你想做的事。
        我是使用 R軟體:應用統計方法 陳景祥著,這本書學習 R 的,也推薦使用 Stack overflow 這個網站,希望對你有些幫助。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s