文字探勘 ( 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成"
這位大大您好~
初來貴寶地,有些疑惑想請教大大。
對於一個初學者而言,若想利用程式語言來實行程式交易,又或者只是單純的抓取網頁特定文字~諸如三大法人每日買賣超、融資使用率等、、、
不知哪種語言較適合初學者入門?
彷間查了下python與R好像是新潮流,那以往的C或VBA等不知比較起來何者較容易入手?
另外就是倘若python與R二者取一,何者能將抓得資料匯入EXCEL(好像查過兩者皆可?!)
但不知道可不可用python與R直接監視盤中資訊,來做AI下單之用?感謝~~
讚Liked by 1 person
抱歉,我剛忘了問一個較關鍵的問題,不知大大有沒有較適合入門者學習的書單介紹?謝謝了~
讚讚
您好,因為我自己使用過的程式語言只有 R, SAS, MATLAB. 所以可能沒辦法給你太全面的建議。像是 C, Excel VBA, python 如果能辦到你想要做的事,也都是很好的工具。
網路爬蟲其實不難,因為都有現成的套件可以使用,困難的是要了解 HTML 的結構,抓到你想要的資料。
其實寫程式的邏輯才是最最重要的,用什麼語法都是大同小異的工具,選擇一個語言將他摸熟,你就可以做到任何你想做的事。
我是使用 R軟體:應用統計方法 陳景祥著,這本書學習 R 的,也推薦使用 Stack overflow 這個網站,希望對你有些幫助。
讚讚