【发布时间】:2017-12-30 14:55:13
【问题描述】:
我正在尝试通过网络抓取 page。我想到了使用包 rvest。 但是,我停留在第一步,即使用 read_html 读取内容。 这是我的代码:
library(rvest)
url <- "http://simec.mec.gov.br/painelObras/recurso.php?obra=17956"
obra_caridade <- read_html(url,
encoding = "ISO-8895-1")
我收到以下错误:
Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, :
Input is not proper UTF-8, indicate encoding !
Bytes: 0xE3 0x6F 0x20 0x65 [9]
我尝试使用类似问题的答案作为答案,但它没有解决我的问题:
obra_caridade <- read_html(iconv(url, to = "UTF-8"),
encoding = "UTF-8")
obra_caridade <- read_html(iconv(url, to = "ISO-8895-1"),
encoding = "ISO-8895-1")
两次尝试都返回了类似的错误。 有人对如何解决这个问题有任何建议吗? 这是我的会话信息:
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Portuguese_Brazil.1252 LC_CTYPE=Portuguese_Brazil.1252
[3] LC_MONETARY=Portuguese_Brazil.1252 LC_NUMERIC=C
[5] LC_TIME=Portuguese_Brazil.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rvest_0.3.2 xml2_1.1.1
loaded via a namespace (and not attached):
[1] httr_1.2.1 magrittr_1.5 R6_2.2.1 tools_3.3.1 curl_2.6 Rcpp_0.12.11
【问题讨论】:
-
试试
encoding = "latin1" -
成功了,谢谢?您是否愿意提供一个正确的答案,并解释为什么使用 latin1 有效,而不是 ISO-8895-1(这是页面源代码中设置的字符)?
标签: r web-scraping rvest