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張圖:


可依情境加以使用不同解決方案,這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 上面的文章,我總是覺得有點複雜… 雖然實務上取得資料的確就是要下那麼多苦工…
再參考這篇他教學官網上的這篇(日文,但看程式碼就知道邏輯) https://sites.google.com/site/kztakemoto/r-seminar-on-igraph---supplementary-information
http://codeiq.hatenablog.com/entry/2013/06/25/182324
http://b.hatena.ne.jp/Keiku/igraph/
備註: 日本人使用 Cytoscape 來繪製網路圖形的比例還蠻高的…
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/3f2b45b32bc3a8204141http://codeiq.hatenablog.com/entry/2013/06/25/182324
日文書籤網站 igraph
http://doubt-ooo.appspot.com/feed?q=igraphhttp://b.hatena.ne.jp/Keiku/igraph/
TokyoR 聚會的簡報
http://www.slideshare.net/kztakemoto/r-seminar-on-igraphstanford 提供很多 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 則只有本機有機會連線
利用Mac連線PC桌機的Rstudio Server
在筆電的 Chrome 輸入 http://192 .168.1.117:8787下載 Github 上的資料
利用 Rstudio 的 Shell, 輸入: git clone https://github.com/johnmyleswhite/ML_for_Hackers 就可以把資料下載回Rstuio ServerRstudio 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
)
- 例: read_excel(
- 例: read_excel(
- 在mac底下,讀入的檔名不可以是數字開頭的檔名,例如: 444_js.xls 要改成變數命名規則 js.xls ;winodws則無此限制,但為了未來跨平台,請直接以英文做為檔名開頭
- 在windows底下,檢視匯入的資料時,若非big5編碼內的文字會以uft8的編碼型式顯示;而在mac則無此問題
長治久安之道,資料量小時請存成xlsx,資料量多時請用資料庫管理…
- 資料量少的時候而且資料有大量與Excel協作機會時,可以考慮直接將資料亦寫成 xlsx 輸出
- 安裝套件 install.packages(
openxlsx
) - 使用資料 write.xlsx() 寫檔至 xlsx
- 安裝套件 install.packages(
- 隨著資料愈來愈多,可以考慮存成直接支援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 ;
beautifulsoup4 4.4.1
- (2)切換環境
- (3)目前有那些python環境
參考資料: 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:
- 安裝 SQLite ODBC
- 在 Power BI 的資料來源中,選取
其他來源
→ODBC
使用以下連線字串 以例中,sqlite文件為 ff123.sqlite 位於 c:\Users\xxx\Downloads\ 資料夾
- DRIVER=SQLite3 ODBC Driver;Database=c:\Users\xxx\Downloads\ff123.sqlite;LongNames=0;Timeout=1000;NoTXN=0; SyncPragma=NORMAL;StepAPI=0;
- 參考網站 :https://www.connectionstrings.com/sqlite3-odbc-driverhttp://www.ch-werner.de/sqliteodbc//
- 成功之後,Power BI還會很無聊的問你帳號與密碼是什麼?
- 隨便填一填就連線成功!
- 支援utf8中文!
備註 :
- 如果你有用過 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
安裝 vsftp
- apt-get update
- apt-get -y install vsftpd
- 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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(rvest) | |
library(tmcn) | |
# WINDOWS 系列需使用此 tmcn 套件,mac與 linux無此需求 | |
# 若無安裝請自行安裝 | |
# install.packages("tmcn", repos="http://R-Forge.R-project.org") | |
# 範例如下 | |
news_url="http://news.ltn.com.tw/list/BreakingNews" | |
title_css = html(news_url) %>% html_nodes(".picword") %>% html_text() | |
utf8_text_title <- toUTF8(title_css ) | |
## 將捉下來的標題轉成 UTF8 | |
my_news = data.frame(title = utf8_text_title ) | |
View(my_news) |
效果節錄:
未使用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 不需要擔心編碼問題 ?
- 變數儲存中文無異常;下例: 網路上的即時新聞標題 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) 新版本
由上一步,可以發現不同環境下 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 的程式碼…
舉例來說,在 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 使用如同一般網路爬蟲技術,流程如下所示:
首先我們可以使用 chrome 中的開發者工具 或是 Firefox 中的 Firebug 來協助我們進行選取,可以發現用以下的語法就能正確捉取我們所要的資料…
此處以 css選取(html_nodes函數)舉例,並將資料存成 dataframe 格式,以利串接至資料庫中:
(1)網路爬蟲的入門也蠻簡單的啊~~
(2)即時新聞大部份都不是很重要~~
備註1:使用 xpath 選取
備註2: 想要取捉每篇即時新聞的網址,以利後續捉取內文的話呢??
備註3: 套件作者 Github https://github.com/hadley/rvest
最近發現到 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
訂閱:
文章 (Atom)