直到剛剛才有空檔碰電腦,發現如果直接用c大的做法程式可以順利執行,但當我想打開
用stri_encoding改過的內容物(即htmlFileEncodingUTF8)時R就會立刻當機。
而在稍微改一下c大的做法後就正常了。
大致上的概念就是使用RCurl而不是用httr來抓內容,之後照我原來的做法用rvest解並用
tmcn去轉碼,附上程式碼和結果如下:
> rm(list=ls())
>
> library(tmcn)
> library(httr)
> library(rvest)
> library(magrittr)
> library(RCurl)
>
#改成使用RCurl的getURLContent來抓
> r<-getURLContent("http://isin.twse.com.tw/isin/C_public.jsp?strMode=2")
#一樣用rvest來解內容
> res<-r%>%read_html()%>%
+ html_node(".h4")%>%html_nodes(xpath="tr")%>%html_text()
#用tmcn轉碼成utf8
> ress<-toUTF8(res)
#轉碼前的結果,一樣是亂碼
> res[1:5]
[1] "\xe6\x9c桧挟霅桧驼隞\xa3\xe8\x99蓢\x8f箫\x90讵迂 \xe5\x9c鹉\x9aˋ\xad桧驼
颲刻\xad哣\x99蓸Ⅳ(ISIN Code)銝箫\xb8弴鞒撣弡ū\xe5锑\xe7椡璆剖锑
CFICode\xe5\x82⒣酉"
[2] " \xe8篭蟡\xa8 "
[3] "1101 \xe3\u0080\u0080\xe5阋瘜冉W00011010041962/02/09銝箫\xb8弴偌瘜亙
極璆胥SVUFR"
[4] "1102 \xe3\u0080\u0080鈭靀野TW00011020021962/06/08銝箫\xb8弴偌瘜亙極
璆胥SVUFR"
[5] "1103 \xe3\u0080\u0080\xe5\x98栉野TW00011030001969/11/14銝箫\xb8弴偌
瘜亙極璆胥SVUFR"
#轉碼後的結果看來是正常多了
> ress[1:5]
[1] "有價證券代號及名稱 國際證券辨識號碼(ISIN Code)上市日市場別產業別CFICode備
註"
[2] " 股票 "
[3] "1101 台泥TW00011010041962/02/09上市水泥工業ESVUFR"
[4] "1102 亞泥TW00011020021962/06/08上市水泥工業ESVUFR"
[5] "1103 嘉泥TW00011030001969/11/14上市水泥工業ESVUFR"
>