为什么我在解析网页时会出现乱码?
我曾经encoding="big-5\\IGNORE"
得到正常的字符,但它不起作用。
require(XML)
url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
options(encoding="big-5")
data=htmlParse(url,isURL=TRUE,encoding="big-5\\IGNORE")
tdata=xpathApply(data,"//table[@class='table_grey_border']")
stock <- readHTMLTable(tdata[[1]], header=TRUE, stringsAsFactors=FALSE)
我应该如何修改我的代码以将乱码变为正常字符?
@MartinMorgan(下)建议使用
htmlParse(url,isURL=TRUE,encoding="big-5")
这是正在发生的事情的一个例子:
require(XML)
url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
options(encoding="big-5")
data=htmlParse(url,isURL=TRUE,encoding="big-5")
tdata=xpathApply(data,"//table[@class='table_grey_border']")
stock <- readHTMLTable(tdata[[1]], header=TRUE, stringsAsFactors=FALSE)
stock
总记录应为 1335。在上述情况下为 309 - 许多记录似乎已丢失
这是一个复杂的问题。有很多问题:
- 格式错误的 html 文件
网络不是标准网络,不是格式良好的 html 文件,让我证明我的观点。
请运行:
url="http://www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm"
txt=download.file(url,destfile="stockbig-5",quiet = TRUE)
stockbig-5
用firefox
打开下载的文件怎么样?
如果 html 文件格式正确,R 中的 Iconv 函数错误
,您可以使用data=readLines(file)
datachange=iconv(data,from="source encode",to="target encode\IGNORE")
当 html 文件格式不正确时,您可以这样做,在此示例中,
请运行,
data=readLines(stockbig-5)
将发生错误。
1: In readLines("stockbig-5") :
invalid input found on input connection 'stockbig-5'
您不能在 R 中使用 iconv 函数来更改格式错误的 html 文件中的编码。
但是,您可以在 shell 中执行此操作