2015/11/9

R 套件異常時如何重新安裝


最近碰到一個奇怪的問題,使用 ggfortify 套件,想要將迴歸的圖形利用 autoplot 輸出發生了問題,顯示 “no layers in plot”


程式碼:
library( ggfortify)
autoplot (lm(Sepal.Length ~ Sepal.Width , data = iris))

異常訊息:
“no layers in plot”
但如果是要繪裂 pca 等統計圖形則正常 …


分別用以下2種方式重新安裝套件都無法解決

(1)
install.packages('ggfortify')
會顯示警告訊息:
Warning in install.packages :
  package ‘ggfortify’ is not available (for R version 3.2.2)


(2)
library(devtools)
install_github('sinhrks/ggfortify')
能安裝,但依舊無解


上網查到的解法如下:

install.packages('ggfortify', dependencies=TRUE, repos='http://cran.rstudio.com/')

另外也利用 Rstudio 檢查了久未更新的其他套件,將其一併更新…
終於可以正常執行 autoplot 指令

參考網址:
http://stackoverflow.com/questions/25721884/how-should-i-deal-with-package-xxx-is-not-available-for-r-version-x-y-z-wa


2015/10/30

Windows系統讀取包含日文、韓文的UTF8 文件 [R]

眾所皆知,w indows系統在處理編碼上是非常弱勢的;

相對於 linux 與 mac 在讀寫各式不同編碼的純文件時,只需要指定好 encoding 的內容就可以正常讀取;目前經過我交叉測試,在windows中如果UTF8文件中包含了日文、韓文的UTF8文件還是無法正確讀取…

將問題與解法整理成如下2張圖:
123
456
可依情境加以使用不同解決方案,這2種方式都可以正確讀取含有日文、韓文等文字的UTF8文件…若使用原始系統搭載的 read.csv() 則執行指令時會報錯!!

備註:

(1)readxl套件,請參考:
http://www.r-bloggers.com/get-data-out-of-excel-and-into-r-with-readxl/

(2)readr套件,請參考:
http://www.r-bloggers.com/readr-0-2-0/

readr還含許多方便的機能,例如猜文件編碼的函數
guess_encoding(文件名稱), 非常實用!!!

2015/10/29

igrpah 的學習資源整理

igrpah 是一個在 R 與 Python 的套件,能處理 Social network Analysis

Social network Analysis 能應用的方向還蠻多的,不過如果直接看 Rblogger 上面的文章,我總是覺得有點複雜… 雖然實務上取得資料的確就是要下那麼多苦工…

日本生科學者介紹 igraph 基本功能

先看這一篇日本生科學者,簡單的介紹了fb網路如何被匯進R → 製圖 → 分群 → 計算相關指標 http://rpubs.com/kaz_yos/igraph1
再參考這篇他教學官網上的這篇(日文,但看程式碼就知道邏輯) https://sites.google.com/site/kztakemoto/r-seminar-on-igraph---supplementary-information

網路群組分組

http://qiita.com/hmj-kd/items/3f2b45b32bc3a8204141
http://codeiq.hatenablog.com/entry/2013/06/25/182324

日文書籤網站 igraph

http://doubt-ooo.appspot.com/feed?q=igraph
http://b.hatena.ne.jp/Keiku/igraph/

TokyoR 聚會的簡報

http://www.slideshare.net/kztakemoto/r-seminar-on-igraph

stanford 提供很多 social network analysis 的範例檔

http://snap.stanford.edu/data/egonets-Facebook.html
備註: 日本人使用 Cytoscape 來繪製網路圖形的比例還蠻高的…

2015/10/27

用 Docker 協助學習Social Network Analysis

用 Docker 協助學習Social Network Analysis

這次遇到的狀況是用了最新的 R jupyter / Rstudio(R/win) 無法安裝igrpah 套件(??!!),所以只能先找目前網路上已經包裝好的 RStudio Server + igraph

下載Docker images(docker pull)

先在google透過關鍵字尋找有沒有被人家包裝好的docker iamges,發現有一個: 我的狀況是透過 VirtualBox 中的 Ubuntu 14執行以下指令 sudo docker pull zachcp/phylogeo

執行d ocker images

簡單執行 sudo docker run -d -p 8787:8787 zachcp/phylogeo 預設的帳密 username: rstudio password: rstudio

調整桌機 Virtual Box 網路設定

因為我們想要Browser來操作 Rstudio Server版本,又因為VM是在Virtual Box中執行,所以我們要設定轉port;在很多的情境下,都會建議主機ip設定為 127.0.0.1;但此處我直接把ip留空白,因為後續我會在區網利用另一台Mac筆電進行連線,如果此處你設定了 127.0.0.1 則只有本機有機會連線 IP2

利用Mac連線PC桌機的Rstudio Server

在筆電的 Chrome 輸入 http://192 .168.1.117:8787

下載 Github 上的資料

利用 Rstudio 的 Shell, 輸入: git clone https://github.com/johnmyleswhite/ML_for_Hackers 就可以把資料下載回Rstuio Server

Rstudio Server 上下傳資料

下載資料: 在 Files 視窗介面下 -- More -- export 即可把Server上的資料下載回筆電
上傳資料: 在 Files 視窗介面下已預設有 Upload 按鈕

保存 Docker images

有時候因為學習需要又下載了新的套件,不想要下次docker run時還要重新安裝一次則可以進行保存
sudo docker commit d9ae87d0828a zachcp/phylogeo:v2 
其中 d9ae87d0828a 是可以透過 docker ps 查詢到的容器id
不過若是在隨身碟上執行此一指令需時較久,建議還是將過程中的檔案直接下載到本機備份較快

2015/10/14

Windows 處理UTF8 CSV就是悲劇… Excel與R搭配時的解法…

Excel處理CSV UTF8 編碼就是悲劇!!!!

    • excel 2016在英文版介面下,匯入文字檔(csv、txt)無法選擇UTF8編碼,只有2種編碼ansi、mac可選
    • excel 2016在中文版介面下,匯入文字檔(csv、txt),可選擇UTF8編碼及其他世界各國文字編碼
    • 總之微軟放棄不是很想認真處理 UTF8 CSV的問題…

    利用Excel協助Data Clean :

    • 不要讓excel直接處理csv UTF8格式
      • 正常讀取utf的文字編輯軟體打開uft8文件
      • 於文字編輯軟體中全選文字→複製貼上至excel→excel中進行資料剖析(這樣比由匯入文字檔還快…)
    • Data Clean成功後,直接轉存成xlsx

  • 被excel存檔過後的csv會自動變成BIG5編碼 → 避免夜長夢多,請不要這樣做
  • excel要存檔成UTF8,有UTF8文字檔的 → 超難用!!!!
  • PowerBI 也無法處理 UTF8 csv → 存成預設為UTF8的 xlsx 保證沒問題

  • 與R搭配時,不想管編碼問題直接用excel存成xlsx、xls:

    • 避免處理編碼的問題時,直接把csv改存成xlsx或xls格式
    • 安裝套件 install.packages(readxl) # 此套件可讀入單頁sheet
      • xlsx格式: 使用xml進行資料儲存,預設已是UTF8編碼;可將副標名改為zip後,解壓縮即可驗證
      • xls格式: 編碼套件 readxl 會幫忙轉成uft8
      • 所以 read_excel 指令中沒有指定編碼的選項!!!
    • 讀入資料,記住如果xlsx、xls內有多張sheet要指定sheet,否則只能讀入一個sheet
      • 例: read_excel(/Users/xxx/Downloads/WeareJordan.xls,sheet=3)
      • 別忘了在 windows 底下目錄名稱要用2個\指定
        • 例: read_excel(c:\Users\zzz\Desktop\CHINA.xls )
    • 在mac底下,讀入的檔名不可以是數字開頭的檔名,例如: 444_js.xls 要改成變數命名規則 js.xls ;winodws則無此限制,但為了未來跨平台,請直接以英文做為檔名開頭
    • 在windows底下,檢視匯入的資料時,若非big5編碼內的文字會以uft8的編碼型式顯示;而在mac則無此問題

    長治久安之道,資料量小時請存成xlsx,資料量多時請用資料庫管理…

    • 資料量少的時候而且資料有大量與Excel協作機會時,可以考慮直接將資料亦寫成 xlsx 輸出
      • 安裝套件 install.packages(openxlsx)
      • 使用資料 write.xlsx() 寫檔至 xlsx
    • 隨著資料愈來愈多,可以考慮存成直接支援uft8的資料庫系統;例如:sqlite可跨平台使用,且支援UTF8openxlsx
      • Excel亦支援各式資料庫直接進行連結

    windows10 kitematic(docker gui)掛載windows目錄

    windows10 kitematic(docker gui)掛載windows目錄

    kitematic 提供了GUI介面,以利 docker 的安裝與操作;
    在官網下載安裝後,一直按下下一步就可以安裝完成;實際上是透過virtual box的方式來達成docker環境的架設。

    步驟

    • 在docker hub蒐尋 jupyter/datascience-notebook 進行安裝,裝好後即running
    • 在 kitematic 介面中尋找 Volumes 進行設定,可以發現無法進行設定
    • 執行 Docker Quickstart Terminal
    • 輸入 docker ps ,確認一下目前執行的 jupyter/datascience-notebook ID
    • 先將jupyter/datascience-notebook給停掉:docker stop 輸入id
    • 手動執行以下指令,重點在於 -v 指令,本機直接用 /host 代稱
      • docker run -d -p 8888:8888 -e GRANT_SUDO=yes -v /host:/home/jovyan/work jupyter/datascience-notebook
      • 原本 ubutnu 底下可以直接指定目錄,但是windows目錄是無法直接掛載
    • 回到kitematic 介面中,可以發現會自動命名一個新的容器名稱,且此時可以用GUI方式指定windows目錄…

    備註

    • 目前kitematic在windows底下的使用,其實不會比直接在vm ubuntu直覺太多,進階指令還是要回到 Docker Quickstart Terminal執行
    • kitematic 介面中預設搭配的shell是 powershell,嗯… 非常難用
    • 沒有在mac上測試過,我猜mac應該不用這麼麻煩…

    2015/10/8

    Python 環境切換與管理[簡易版]

    Python 環境切換與管理[簡易版]

    Python 目前比較麻煩的是有 Python 2 / Python 3 的版本,然後 Mac 也有自帶的Python, 初學者往往在一開始時容易困擾…
    例如:pip install 套件後,到底是安裝到那一個 python 環境呢? pip3 ?? pip ??

    解決方式:

    • (1)使用 Pyenv 完全隔開不同的 Python
      • 例如:隔開之後再安裝不同版本的 Anacnoda(預設安裝很多的python套件)
      • 因為是完全分開的,所以依據你所使用的環境進行 pip install 套件安裝,不會與原先系統預設的python環境對衝
      • Anacnoda 官網介紹說 Anacnoda 已經具備有套件與環境管理機能,但依照我自己的使用經驗,建議還是先裝 pyenv 來把環境完全切割比較好…

    • (2)使用 Docker image
      • 例如:我目前使用這組 Docker image; https://hub.docker.com/r/jupyter/datascience-notebook/
      • 好處是已經有了 python 2、python 3、R 的Jupyter 
      • Python 套件安裝
        • 此 Docker 預設的Python環境是 Python3 ,所以如果是 pip install 套件,則會安裝套件至 Python3
      • 若要安裝 Python2套件呢?
        • 首先要知道 docker 中有多少python環境
        • conda env list → 可得知安裝 python2 的環境叫 python2
        • 選擇 python2 環境: source activate python2
        • 再次使用 conda env list 確認目前的環境
        • 使用 pip install 套件。例如: pip install beautifulsoup4
        • 安裝後新的套件後(安裝至 python2中),記得下 docker commit 指令把容器的狀態給存起來
    • 備註
      • 因為 docker 本來就是虛擬化工具,docker中發生了什麼事情對於主系統都不會有什麼影響,所以docker中就沒有必要再安裝 pyenv;當然這是用空間(SSD/HD)來換取煩雜的設定時間損失。

    備註:

    conda常用指令:
    • (1)目前作用中的環境安裝了多少python套件 conda list ;
    也支援這樣的語法 conda list baut* ,則列出:
    beautifulsoup4 4.4.1
    • (2)切換環境
    source activate python2
    • (3)目前有那些python環境
    conda evn list
    參考資料: http://conda.pydata.org/docs/_downloads/conda-pip-virtualenv-translator.html

    2015/10/7

    RCurl 設定 SSL 驗證 [R]


    例如:

    library(RCurl)
    getURL("https://www.python.org"  )

    會得到
    * Error in function (type, msg, asError = TRUE) : error setting certificate verify locations:
      CAfile: /etc/pki/tls/certs/ca-bundle.crt
      CApath: none

    調整為:

    library(RCurl)
    getURL("https://www.python.org" ,   ssl.verifypeer = FALSE)

    則可取回 Html 文件

    2015/10/3

    Power BI 利用 ODBC 連接 sqlite

    Power BI 利用 ODBC 連接 sqlite
    • Power BI 是微軟力推的商業智慧軟體,目前強調在與 excel 高度的整合性;所以被微軟內部視為重要的戰略武器,幾乎每個月都有更新功能… 目前使用限定在 windows 平台,但可以用私人網域郵件申請帳號,就可以將 Power BI的內容以 HTML5 網頁方式呈現
    • 但是…
    • 其實實務上在資料蒐集的階段,目前 windows 平台不是一個好選擇… 往往我們是在 linux 的 docker 環境中將資料以最簡單的 sqlite 方式予以儲存
    • 所以將sqlite的檔案移轉至 windows 平台後利用 ODBC 方式取存是最簡單的

    step:

    備註 :

    • 如果你有用過 Excel 舊版中連接資料庫中取得 ODBC 或是 SQL SERVER 就會被目前 Power BI 純工程師介面給嚇到… 突然要你輸入一長串的連線字串,完全沒有提示… 還好 google 找得到
    • 如果不用 ODBC, 使用將 sqlite 匯出成 csv 後 → 匯入 Power BI,會有utf8處理中文的問題…
      • 目前 Power BI 似乎暫無解決 utf8 csv 的手段
      • Excel也有一樣的問題,但可用匯入文字檔的方式才能解決
      • sqlite → 轉存 csv → 轉存成 excel 就能解決,但有點複雜

    總之利用 ODBC 方式算是 windows 底下處理 sqlite 最簡單的方式!

    利用 docker 協助程式學習

    作業模式/情境
    • 出門帶著 Mac + Docker化隨身碟,確保作業環境為純 linux 開發環境
    • 在家使用 PC桌機(16GB) + Docker化隨身碟,確保作業環境為純 linux 開發環境
    • 有些在 mac 上極難安裝的程式在 Ubuntu 上的 Docker 異常簡單
    • Mac / Windows 雖然都有 Docker Tools 但很難用,還不如直接用虛擬機 Ubuntu設定
    • 目前學習 Docker 是為了學習程式開發,暫不學習更進階的議題
    • 使用網路爬蟲捉資料時用 PC 桌機上的 linux 的Docker R來進行資料的取得
    • 節省 docker 若安裝 mac上 的 SSD空間浪費
    • Docker Hub上有各式神人提供的設定好的Dockerfile

    step:

    • 購置一個市面上販售最快的 64GB 隨身碟(不用1000元)
    • 將其格式化為 exFAT
      • Mac / Windows / Linux 都可以讀寫
    • 在 Mac / Windows 都安裝上 virtual box
    • 將 Mac / Windows virtual box 預設的資料夾指向隨身碟
    • 下載各式的 Linux Based VM並安裝
      • Ubuntu 15 Server
      • Ubuntu 14 Server
      • Ubuntu 14 Desktop
      • Ubuntu + GIS
      • 帳號與密碼儘量單一化,因為都是為了學習而非實際生產環境

    • 以隨身碟中VM: Ubuntu Server 15為主,進行各項設定
      • 安裝 vsftp 以利資料交換
      • 安裝 docker
        • 安裝 docker 化軟體
        • 例如:Jupyter Notebook,以利學習 R / Python / Spark
        • 依情境將 virtual box 中的網路設定 port forward

    Ubuntu 15 設定 vsftp

    主要參考這篇 http://www.liquidweb.com/kb/how-to-install-and-configure-vsftpd-on-ubuntu-15-04/

    安裝 vsftp
    • apt-get update
    • apt-get -y install vsftpd
    修改設定檔 vim /etc/vsftpd.conf
    • anonymous_enable=NO
    • local_enable=YES
    • write_enable=YES
    • chrootlocaluser=YES
    • 設定檔中的localumask=002 直接改成localumask=775 才能上檔目錄、檔案
    備忘
    • 使用 filezilla 連線時,記得要選 sftp 協定
    • ubuntu 15預設重啟 vsftp 指定修改為: service vsftpd restart,有些教學網頁上的資料是舊的,不適用於 ubuntu15
    用途/情境
    • 在VM ubuntu 中使用 docker run -v 時設定好共享資料夾,將資料用 ftp 方式回傳至本機
    • 因為只有本機有存取的需求,所以不需要設定太繁雜的安全性設定,所以上述直接將 local_umask=775

    2015/9/30

    部落格寫作流程

    部落格寫作流程

    寫作原因:

    • facebook 的蒐尋機制十分落後,很難期待
    • 為自己留下學習與思考上的紀錄

    流程:

    • 使用 macdown 軟體,以markdown語法編寫,再用html語法貼至 blogger平台
    • 以h3做為文章內的次標題(###)
    • 貼圖使用 flickr 以利同時發佈到不同的blog平台
      • 上傳至flickr私人目錄
      • flickr的私人權限是以照片為單位,不是以目錄為單位,為了以利後續批次作業,上傳的圖片的檔名均以blog+日期命名
      • flickr 支援外連:點選 flickr share圖示即可取得連結
      • 減少圖片的使用,部落格儘量以文字與流程為主,技術細節就直接放在 github
    • 程式碼貼至 github gist 以利同時發佈到不同的blog平台

    重點:

    • 重視問題的流程
    • 儘量長話短話講重點
    • 儘量維持一定的發文頻率

    技術合作:

    會在 http://data-sci.info/ 出沒,所以如果有看到文章或是回應與本部落格高度相似的,不用懷疑作者就是我啦… 沒有抄襲的問題

    在Windows 系統捉取網頁中文資料時會有亂碼,要如何處理?[R]

    Q:在Windows 系統捉取網頁中文資料時會有亂碼,要如何處理?

    A:使用 library(tmcn) 套件轉utf8


    效果節錄:
    未使用tmcn套件前:
    [1] “\xe7摰單\x87\xae葉敹圾\xe9\xe6\x89偷\xe5 \xe5\xe9\xe5\xe5璈\xe6頧\x9f”
    [2] “鈭箸腦\xe6\x96嚗\xb6晷\xe3\u0080擛亦\xb5\u0080\x8d 瞈\u0080瘣芷\xe7\x87\xe6”
    使用tmcn套件與 toUTF8 函數後:
    [1] “大樹阻台北淡水路 北投警冒雨排除”
    [2] “曾抗議連戰赴中被美禁入境 王世堅坦然面對”

    2015/9/20

    [備忘]使用 Docker 中的R Jupyter,中文顯示與輸出異常??


    [備忘]使用 Docker 中的R Jupyter,中文顯示與輸出異常??


    問題:

    使用 Docker 中的R Jupyter,中文顯示與輸出異常??

    輸入中文字串正常,檢查編碼也是 UTF-8

    解法:[暫解]


    • 在R中設定語系:   Sys.setlocale(category = "LC_ALL", locale = "C.UTF-8") 
    • Sys.setlocale()的效果是暫時性的,下次再開一個新的notebook時需要重新啟用

    • 經過測試,在讀入網頁時都會自動轉成 UTF-8 也都能無誤的輸出 UTF-8 資料
    • 讀入資料時,例如讀入 BIG5 編碼的 CSV 文件時,只要指定正確編碼格式也能正確讀入R中  ---ex: read.table("ubike-sampledatabig5.csv" ,header=TRUE, fileEncoding="BIG5")
    • 網路上有建議將 BIG5 文件全部轉成 UTF-8後再處理,在Linux應該只需要在讀入時指定好編碼格式即可…  因為我測試用  readLines 轉編碼會異常…
    • Docker 只是測試環境,所以不想在設定上尋求完美的解法;後續在生產環境時,會是單純的 R 搭配著 zh_TW.UTF-8 的設定

    困惑點:


    • 聽說在 Linux 版本的 R 不需要擔心編碼問題 ?
    若用 Sys.getlocale() 檢查只會回傳 'C' ,依網路上的文章理論上應該是不會有問題才是;但是 Jupyter 相關的討論串中也有人建議應該要加進  en_US.UTF-8 因為在部份字元排序會與 C.UTF-8 有不一致的情形發生?
    • 變數儲存中文無異常;下例: 網路上的即時新聞標題 title_css,直接以 title_css 執行,則正常顯示中文


     但是若用 print(title_css)或是 write.table()輸出文字檔,則會出現如下錯誤


    經 Encoding(title_css)檢查也是 UTF-8

    因為是 Docker 所啟用的ubuntu所以確認語系等相關設定為何?

    發現和一般安裝 Ubuntu 的狀況不同…  

    發現 Docker 中所預設的語系比一般情況下的 Ubntu 少了很多,所以若是在 R 中執行網路上建議的 Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")會有錯誤訊息…
    取而代之,我們可以使用

    則將變數搭配 print() 或是相關輸出函式時就能正常顯示中文 write.table()

    參考文件:







    [備忘]使用 Mac Homebrew安裝最新版Sqlite後,系統預設仍是舊版Sqlite3


    問題:
    使用Homebrew安裝最新版Sqlite後,系統預設仍是舊版Sqlite3???

    解法:
    (1)因為我有安裝zsh ,所以 ~/.zshrc 的優先權大於~/.bash_profile

    因為忘了這個前提,所以花了很多時間在找解法 = ="

    (2)確認目前環境中,sqlite3的位置( which sqlite3)
    • source ~/.zshrc 再執行which sqlite3 :
      • /Users/帳號/anaconda/bin/sqlite3 (版號:3.8.4.1 2014-03-11) 舊版本
    • source ~/.bash_profile 再執行which sqlite3:
      • /usr/local/bin/sqlite3 (版本:3.8.11.1 2015-07-29) 新版本
    (3)調整 ~/.zshrc 設定

    由上一步,可以發現不同環境下 sqlite3 位置不同,自然版本也就不同,也難怪依照網路上的建議對 ~/.bash_profile 進行編輯對我無效,將 ~/.zshrc 設定檔中的環境變數調整如下,記得要把/usr/local/bin目錄 置於/Users/帳號/anaconda/bin前面:

    export PATH=/usr/local/bin:/Users/帳號/anaconda/bin

    (4)存檔後,重新 source ~/.zshrc 就生效了!

    心得:

    環境建置有時候真的是一件累人的事情…  也難怪近來 Docker 會如此火紅了

    2015/9/19

    [備忘] 在Blogger中插入程式碼

    現在都儘量使用 markdown 語法來編寫文件,因為很容易轉換成 html 格式文件;然而在google提部的部落格平台中(blogger.com),卻無法簡單的插入程式碼…

    舉例來說,在 markdown 軟體中的效果如下:


    但是實際顯示變成:


    看起來專業程度就差了一半…

    網路有很多討論的文章都建議去修改 css 語法,但選擇 blogger.com 做為平台就是希望儘量減少這種麻煩事,專注在文章寫作上;

    所以找到了 Github Gist 的解決方法,只要在 Github Gist 建立程式碼後,再到 Blogger 的編寫平台插入 Javascript 即可

    例如:

     <script src="https://gist.github.com/lovelybigdata/20f71f0089eada9353c0.js"></script>



    這樣看來是不是專業多了呢??

    另外不知保故,依國外網友們的實測再經過我的測試 Google Blogger 若使用最新的動態檢視版面則一樣無法正常顯示 Github Gist 的程式碼…


    2015/9/17

    簡單好用的 web scraping R 套件 - rvest

    近年來很流行網路爬蟲技術,可以自行捉取自己想要的資訊; 只要不是太複雜的網站,使用 R 底下的套件 httr 就可以捉取了;不過由於 httr 並沒有直接支援 CSS 與 xpath 選取,所以還要額外安裝其他的套件來輔助解析網頁資訊。

    最近發現到 rvest 這個套件,直接支援 ccs 與 xptah 選取,安裝 rvest 後,在啟用 rvest 時也會順道加入支援 pipeline 編寫,可以有效避免恐怖的巢狀地獄…
    rvest 使用如同一般網路爬蟲技術,流程如下所示:
    • 要捉的網頁真實的網址是什麼 --url = ???
    • 把網頁捉下來 --html( )
    • 解析(parse)網頁,選取所需內容(使用 CSS 或 XPATH ) --html_nodes()
    • 過濾掉其他雜質 -- 此例中我們只留下純文字就好 不留下超連結 html_text()
    因為蘋果日報最近的全幅廣告真的很討人厭 > <" ,以下就以自由時報的即時總覽的第一頁進行說明 網址如下: http://news.ltn.com.tw/list/BreakingNews

    首先我們可以使用 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