2017-09-28 39 views
0

我打算说我的XML知识非常少。Web抓取突然停止工作

我答应你比,直到2或3天前,下面的代码工作完美:

library("rvest") 
url<-"https://en.wikipedia.org/wiki/Opinion_polling_for_the_next_United_Kingdom_general_election" 
H<-read_html(url) 
table<-html_table(H, fill=TRUE) 
Z<-table[1]; Z1<-Z[[1]] 

,然后让我开始去做我想要的东西,从该网页提取的第一个表,并把它在数据帧Z1。然而,这却突然停止了工作,我不断收到错误消息:

Error in if (length(p) > 1 & maxp * n != sum(unlist(nrows)) & maxp * n != : 
    missing value where TRUE/FALSE needed 

当我看H似乎不再是一个列表,现在看起来是这样的:

{xml_document} 
<html class="client-nojs" lang="en" dir="ltr"> 
[1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 ... 
[2] <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject ... 

这显然是在html_table失败。

我真的不知道从哪里开始。

+0

我是不是认为即使页面上的表格发生了变化,html_table仍然能够解析它吗?我查看了这段时间内页面上的变化,他们是小编辑。 – ANCutler

回答

0

我相信你错过了在html_table函数之前解析出表节点的步骤。

library("rvest") 
url<-"https://en.wikipedia.org/wiki/Opinion_polling_for_the_next_United_Kingdom_general_election" 
H<-read_html(url) 
tables<-html_nodes(H, "table") 
Z1<-html_table(tables[1], fill = TRUE)[[1]] 
+0

似乎工作。我的回忆是,当我第一次尝试这样做时,我使用的是表格方法,但最终以我发布的代码结束。直到几天前,这绝对有效。我查了一下,代码也没有修改好几个月。好吧。谢谢。 – ANCutler