2017-09-28 72 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