2012-09-11 34 views
3

试图刮掉维基百科页面,等等这些我以前[R拍击readHTMLTable呼吁维基百科

library(XML) 
myURL <- "http://en.wikipedia.org/wiki/List_of_US_Open_MenUs_Singles_champions" 
y <- readHTMLTable(myURL, stringsAsFactors = FALSE) 

R来多次崩溃无论是在RStudio或标准GUI

其他SO评论上类似的问题,建议使用readlines方法

u=url(myURL) 
readLines(u) # cannot open: HTTP status was '404 Not Found' 

URL被重定向实际上这样进入了最后的URL

myURL <- "http://en.wikipedia.org/wiki/List_of_US_Open_Men%27s_Singles_champions" 

这次readlines方法确实输出的页面,但使用的XML功能,包括htmlParse,仍然会造成死机

TIA

+0

的确有在'XML'错误封装,可能在'RS_XML_ParseTree'中,如@benbolker在我的答案的评论中所示。 – Andrie

回答

3

我已经找到了包httr解决任何网络问题拼抢宝贵的。在这种情况下,你需要添加一个用户代理个人资料,因为维基百科块的内容,如果你不这样做:

library(httr) 
library(XML) 
myURL <- "http://en.wikipedia.org/wiki/List_of_US_Open_Men%27s_Singles_champions" 
page <- GET(myURL, user_agent("httr")) 
x <- readHTMLTable(text_content(page), as.data.frame=TRUE) 
head(x[[1]]) 

产生以下:

US Open Men's Singles Champions               NA 
1    Official website              <NA> 
2      Location      Queens – New York City United States 
3       Venue    USTA Billie Jean King National Tennis Center 
4     Governing body              USTA 
5       Created 1881 (established)Open Era: 1968\n(44 editions, until 2011) 
6       Surface Grass (1881–1974)HarTru (1975–1977)DecoTurf (1978–Present) 
+0

是的,虽然我可以通过OP的代码来确认崩溃,这个代码在某处表明是一个真正的错误('RS_XML_ParseTree'是最近的原因......)。可能值得向维护者发送电子邮件。 –

+0

@BenBolker对不起,是的。我也可以确认原始代码在我身上崩溃,因此使用'httr',它至少返回了一些结果。 – Andrie

+0

@Andrie。谢谢,我会检查出httr。 v类似的URL不会导致崩溃很奇怪http://en.wikipedia.org/wiki/List_of_Wimbledon_gentlemen%27s_singles_champions – pssguy