【问题标题】:R: rvest - is not proper UTF-8, indicate encoding?R: rvest - 不是正确的 UTF-8,表示编码?
【发布时间】:2015-12-26 08:07:47
【问题描述】:

我正在试用 Hadley Wickham 的“新”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 提供的所有选项,但都没有奏效。

有什么问题?

我的代码:

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

我在 Google 上搜索过“现在如何对网页进行编码?”。

从 W3C 找到了这个 Makrup 验证工具,但没有太大帮助:

http://validator.w3.org/check?uri=http://www.w3.org/2003/10/empty/emptydoc.html

【问题讨论】:

  • 试试:TV_Audio_Video_Marca &lt;- read_html(iconv(page_source[[1]], to="UTF-8"), encoding = "utf8")
  • 有效,请发布一个完整的答案并解释 iconv(),它在这种情况下使用。文档没有提到这个“技巧”,或者是这样吗?

标签: r encoding utf-8 web-scraping rvest


【解决方案1】:

查看页面源码,他们声称使用的是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")

一般来说,这是一个坏主意 - 最好指定它的编码来源。在这种情况下,错误可能是他们的,所以这种快速而肮脏的方法可能没问题。

【讨论】:

  • 是否有验证编码的工具?正如您所说,他们说使用“utf-8”,但例如 Rvest 无法识别它。我看到西班牙语页面,一切正常。但是如何判断“他们真的在使用“utf-8”吗?
  • 你做对了,据我所知,错误是在网站方面。如果你确实想确保它是正确的,read_html(iconv(page_source[[1]], from = "ISO-8859-1", to = "UTF-8"), encoding = "utf8") 是明确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多