rvest爬取雞蛋期貨資料(遇到的問題)

視界IT發表於2018-05-20

1.之前用rvest爬取網頁表格,很順利,但這次用該語句時,因為電腦編碼問題,一直提示
Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html,  : 
  input conversion failed due to input error, bytes 0x86 0x31 0x31 0x30 [6003]

別的電腦可以出結果,我的電腦因為今天520,打算和女朋友統一戰線,有點小脾氣 ,那我只好想想其他方法。以下是之前所用程式碼。

library(rvest)
tdist<-read_html("http://vip.stock.finance.sina.com.cn/q/view/vFutures_History.php?page=28&breed=JD0&start=2010-01-01&end=2018-05-20&jys=dce&pz=JD&hy=JD0&type=inner&name=%E5%A4%A7%E8%B1%861109", encoding = 'GB2312')
t1<-tdist %>%html_table(fill = TRUE)
write.csv(t1,"D:/qaac.csv")

2.想想有啥新方法,可以繞過雷區,畢竟小脾氣對直男來說是無解的。以下是新方法
library(rvest)
f <- tempfile()#建立臨時檔案
download.file("http://vip.stock.finance.sina.com.cn/q/view/vFutures_History.php?page=28&breed=JD0&start=2010-01-01&end=2018-05-20&jys=dce&pz=JD&hy=JD0&type=inner&name=%E5%A4%A7%E8%B1%861109", f)
fchars <- readChar(f, file.info(f)$size)
stringi::stri_enc_detect(fchars)
# 發現文件是 GB18030 編碼,上面那個方法就是這個編碼問題
futf8 <- stringi::stri_encode(fchars, "GB18030", "UTF8")
fhtml <- rvest::html(futf8)
#以上全為重新為網頁編碼的過程,此法可通用

t1<-fhtml %>%html_table(fill = TRUE)

t1<-t1[[4]]#定位表格位置
write.csv(t1,"D:/0qaac.csv")
哪位大神如果知道第一種方法該如何處理,歡迎留言,感激涕零。



相關文章