【问题标题】:Extracting an html table in another language using R使用 R 提取另一种语言的 html 表
【发布时间】:2014-08-27 14:15:34
【问题描述】:

我正在使用 R 从网站中提取 HTML 表格。 但是,HTML 表格的语言是印地语,文本显示为 unicode。 我可以设置/安装字体系列并获取实际文本而不是 unicode 的任何方式。

我遵循的代码是:

library('XML')
table<-readHTMLTable(<the html file>)
n.rows <- unlist(lapply(table, function(t) dim(t)[1]))
table[[which.max(n.rows)]]

示例网站是:http://mpbhuabhilekh.nic.in/bhunakshaweb/reports/mpror.jsp?base=wz/CP8M/wj/DP8I/wz/CoA==&vsrno=26-03-02-00049-082&year=2013&plotno=71

输出如下: “” 等等

注意:由于某种原因,readHTMLTable 仅在我删除 HTML 文件中的前两个不需要的表时才有效。因此,如果您必须使用文件进行测试,请编辑掉前两个表或直接从文件中删除前两个表头。

任何帮助将不胜感激。谢谢

更新:

这个问题似乎与在 Windows 操作系统机器上的 R 中设置的语言环境有关。无法弄清楚如何让它工作!

【问题讨论】:

  • 您使用的是哪个版本的 R/OS?我无法重现您的问题(Fedora Core 18 上的 R 3.0.2,XML 包 3.98-1.1)。我可以使用readHTMLTable,而无需从HTML 中编辑出任何内容,并且我在readHTMLTable 的输出中看到了印地语字符。您的语言环境设置为(运行sessionInfoSys.getlocale())?
  • @nico .. 这些是我的系统规格... R 版本 3.0.2 (2013-09-25) 平台:x86_64-w64-mingw32/x64 (64-bit) - windows 8 语言环境:[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C [5] LC_TIME=English_United States.1252 其他附加包:[1] XML_3.98-1.1
  • @nico 所以我想这可能与语言环境设置有关?你能告诉我你设置了什么吗?
  • 我已将其设置为 "LC_CTYPE=en_GB.utf8;LC_NUMERIC=C;LC_TIME=en_GB.utf8;LC_COLLATE=en_GB.utf8;LC_MONETARY=en_GB.utf8;LC_MESSAGES=en_GB.utf8;LC_PAPER=en_GB.utf8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_GB.utf8;LC_IDENTIFICATION=C"。我猜 UTF-8 是造成差异的原因。试试:Sys.setlocale("LC_ALL", 'en_US.UTF-8')
  • 好吧,我对语言环境的了解还不够,恐怕无法帮助您解决这个问题,但至少您对问题所在有一些线索!

标签: r data-processing


【解决方案1】:

我为这个与语言环境相关的错误找到的解决方案是调用相应的编码..

library('XML')
table<-readHTMLTable(<the html file>)
n.rows <- unlist(lapply(table, function(t) dim(t)[1]))
output <- table[[which.max(n.rows)]]
for (n in names(output)) Encoding(levels(output[[n]])) <-"UTF-16"

R 控制台中的输出可能仍然看起来很乱,但好处是,一旦您导出数据集(例如 csv),它就会在其他编辑器上以印地语出现。

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 2014-03-12
    • 1970-01-01
    • 2014-11-04
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多