readHTMLTable和UTF-8编码

Mac*_*iej 6 xml r web-scraping

我一般都有readHTMLTable和XML包的编码问题.我想下载从抛光部位allegro.pl(类似于eBay拍卖网站)的一些表,但经过如此,有一个编码的问题与波兰的字体,即使我使用的编码="UTF-8"或stringsAsFactors = F在readHTMLTable.

码:

library(XML)
url<-paste("http://allegro.pl/listing.php/search?category=15821&sg=0&p=",1:5,"&string=facebook",sep="")

alldata<-NULL

for (i in 1:5){
dane<-as.data.frame(readHTMLTable(url[i],1,stringsAsFactors = TRUE, encoding="UTF-8")$lista)
alldata<-rbind(alldata,dane)
}
Run Code Online (Sandbox Code Playgroud)

结果:

> head(alldata[,c(2,3)])
                                                        V2                      V3
1     Facebook Fan Page z ANIMACJ?„„ indywidualny projekt Kup Teraz! 150,00 z?…‚
2 Lubi?„™ to! Facebook! OKAZJA!!! 160 FAN?“W!!! ZOBACZ!  Kup Teraz! 10,99 z?…‚
3    125 fan?Â?w fani like fanpage FACEBOOK polskie konta  Kup Teraz! 10,00 z?…‚
4    Reklama Fanpage 43500+ fan?Â?w, fani, facebook Efekt  Kup Teraz! 17,99 z?…‚
5       Facebook Fanpage -Stworzenie Profesjonalnego Konta  Kup Teraz! 77,90 z?…‚
6       Facebook Fanpage -Skuteczna Obs?…‚uga/Reklama /FV Kup Teraz! 100,00 z?…‚
Run Code Online (Sandbox Code Playgroud)

如果我使用getURL或readLines没有问题,但我想使用XML包,因为它是伟大的事情:)

当我使用XML包函数(如htmlParse,xpathApply或提到的readHTMLTable)时总会出现这个问题.

我正在使用Rstudio 0.94.110 @ Windows7.SessionInfo如下.

R version 2.14.0 (2011-10-31)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=Polish_Poland.1250  LC_CTYPE=Polish_Poland.1250    LC_MONETARY=Polish_Poland.1250 LC_NUMERIC=C                   LC_TIME=Polish_Poland.1250    

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] spdep_0.5-41     coda_0.14-6      deldir_0.0-16    maptools_0.8-10  foreign_0.8-46   nlme_3.1-102     Matrix_1.0-1     lattice_0.20-0   boot_1.3-3      
[10] sp_0.9-91        maps_2.2-2       RCurl_1.7-0.1    bitops_1.0-4.1   XML_3.4-2.2      Cairo_1.5-1      car_2.0-11       survival_2.36-10 nnet_7.3-1      
[19] MASS_7.3-16     

loaded via a namespace (and not attached):
[1] grid_2.14.0  tools_2.14.0
Run Code Online (Sandbox Code Playgroud)

Mac*_*iej 4

有一段时间我和 XML 包的创建者 Duncan Temple Lang 一起发邮件。昨天(2012年1月30日)他在Omegahat网站上上传了新版本的XML包。31位版本R的新版本3.9-4消除了这个编码问题!:)

下载包形式链接如下: http://www.omegahat.org/R/bin/windows/contrib/2.14/

library(XML)
url<-paste("http://allegro.pl/listing.php/search?category=15821&sg=0&p=",1:5,"&string=facebook",sep="")
doc = htmlParse(url[1], encoding = "UTF-8")
z = as.data.frame(readHTMLTable(doc, stringsAsFactors = FALSE)$lista)
Run Code Online (Sandbox Code Playgroud)

它有效,所以我们可以关闭这个主题。:)