R: rvest - 不是正确的 UTF-8,指示编码?
R: rvest - is not proper UTF-8, indicate encoding?
我正在试用 Hadley Wickham 的 "new" Rvest 软件包。
我过去用过它,所以我希望一切 运行 顺利。
但是,我一直看到这个错误:
> TV_Audio_Video_Marca <- read_html(page_source[[1]], encoding = "ISO-8859-1")
Error: Input is not proper UTF-8, indicate encoding !
Bytes: 0xCD 0x20 0x53 0x2E [9]
如您在代码中所见,我使用了编码:ISO-8859-1
。在此之前我使用 "UTF-8",但是函数 guess_encoding(page_source[[1]])
表示编码是:ISO-8859-1
。我尝试了 guess_encoding
提供的所有选项,但 none 有效。
有什么问题?
我的代码:
library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()
startServer()
remDr <- remoteDriver()
remDr$open()
#navigate to your page
remDr$navigate("http://www.linio.com.pe/tv-audio-y-video/televisores/")
#scroll down 5 times, waiting for the page to load at each time
for(i in 1:5){
remDr$executeScript(paste("scroll(0,",i*10000,");"))
Sys.sleep(3)
}
#get the page html
page_source<-remDr$getPageSource()
#parse it
TV_Audio_Video_Marca <- read_html(page_source[[1]], encoding = "UTF-16LE")
更新 1
我用谷歌搜索了 "How to now the encoding of a web page?"。
从 W3C 找到了这个 Makrup Validation Tool,但帮助不大:
http://validator.w3.org/check?uri=http://www.w3.org/2003/10/empty/emptydoc.html
查看页面源代码,他们声称使用的是 UTF-8 编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
所以,问题是,他们是否真的使用了我们需要担心的足够不同的编码,或者我们可以只转换为 utf-8,猜测任何错误都可以忽略不计?
如果您对快速而肮脏的方法以及一些潜在的 mojibake 感到满意,您可以使用 iconv
:
强制使用 utf-8
TV_Audio_Video_Marca <- read_html(iconv(page_source[[1]], to = "UTF-8"), encoding = "utf8")
一般来说,这是个坏主意 - 最好指定它的编码来源。在这种情况下,也许错误是他们的,所以这种快速而肮脏的方法可能没问题。
我正在试用 Hadley Wickham 的 "new" Rvest 软件包。
我过去用过它,所以我希望一切 运行 顺利。
但是,我一直看到这个错误:
> TV_Audio_Video_Marca <- read_html(page_source[[1]], encoding = "ISO-8859-1")
Error: Input is not proper UTF-8, indicate encoding !
Bytes: 0xCD 0x20 0x53 0x2E [9]
如您在代码中所见,我使用了编码:ISO-8859-1
。在此之前我使用 "UTF-8",但是函数 guess_encoding(page_source[[1]])
表示编码是:ISO-8859-1
。我尝试了 guess_encoding
提供的所有选项,但 none 有效。
有什么问题?
我的代码:
library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()
startServer()
remDr <- remoteDriver()
remDr$open()
#navigate to your page
remDr$navigate("http://www.linio.com.pe/tv-audio-y-video/televisores/")
#scroll down 5 times, waiting for the page to load at each time
for(i in 1:5){
remDr$executeScript(paste("scroll(0,",i*10000,");"))
Sys.sleep(3)
}
#get the page html
page_source<-remDr$getPageSource()
#parse it
TV_Audio_Video_Marca <- read_html(page_source[[1]], encoding = "UTF-16LE")
更新 1
我用谷歌搜索了 "How to now the encoding of a web page?"。
从 W3C 找到了这个 Makrup Validation Tool,但帮助不大:
http://validator.w3.org/check?uri=http://www.w3.org/2003/10/empty/emptydoc.html
查看页面源代码,他们声称使用的是 UTF-8 编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
所以,问题是,他们是否真的使用了我们需要担心的足够不同的编码,或者我们可以只转换为 utf-8,猜测任何错误都可以忽略不计?
如果您对快速而肮脏的方法以及一些潜在的 mojibake 感到满意,您可以使用 iconv
:
TV_Audio_Video_Marca <- read_html(iconv(page_source[[1]], to = "UTF-8"), encoding = "utf8")
一般来说,这是个坏主意 - 最好指定它的编码来源。在这种情况下,也许错误是他们的,所以这种快速而肮脏的方法可能没问题。