2014-10-28 86 views
2

我遇到了將解析的html寫入文件的問題。我有這個數據從指定的XPath表,但是當我試圖把它寫入一個文件,我得到「錯誤貓(列表(...))。使用xpath將解析的html寫入R中的文件

> fileUrl <- "http://www.w3schools.com/html/html_tables.asp" 
> library(XML) 
> htmlFile <- htmlTreeParse(fileUrl, useInternal = TRUE) 
> # and then I grab the table 
> urlParse <- xpathSApply(htmlFile, "//table[@class='reference']") 
> urlParse[[1]] 
[[1]] 
<table class="reference" style="width:100%"> 
    <tr><th>Number</th>&#13; 
    <th>First Name</th>&#13; 
    <th>Last Name</th>  &#13; 
    <th>Points</th>&#13; 
</tr> 
    <tr><td>1</td>&#13; 
    <td>Eve</td>&#13; 
    <td>Jackson</td>  &#13; 
    <td>94</td>&#13; 
</tr> 
    <tr><td>2</td>&#13; 
    <td>John</td>&#13; 
    <td>Doe</td>  &#13; 
    <td>80</td>&#13; 
</tr> 
    <tr><td>3</td>&#13; 
    <td>Adam</td>&#13; 
    <td>Johnson</td>  &#13; 
    <td>67</td>&#13; 
</tr> 
    <tr><td>4</td>&#13; 
    <td>Jill</td>&#13; 
    <td>Smith</td>  &#13; 
    <td>50</td>&#13; 
</tr> 
</table> 

,這是好的,但我當寫這一個文件,我得到:

> write(urlParse[[1]], file = "file.txt") 
Error in cat(list(...), file, sep, fill, labels, append) : 
    argument 1 (type 'externalptr') cannot be handled by 'cat' 

但是當我這樣做:?

> write(c(3234,234,23,4,234), file = "file.txt") 

一切都很好,是因爲它是一個列表我試圖裏urlparse [1],的toString( urlParse [1]),urlParse [[1]] [1]。不知道爲什麼。

回答

2

您的XML當前由C級對象表示。您需要將其轉換爲字符串。 saveXML可以用來做:

fileUrl <- "http://www.w3schools.com/html/html_tables.asp" 
library(XML) 
htmlFile <- htmlTreeParse(fileUrl, useInternal = TRUE) 
urlParse <- xpathSApply(htmlFile, "//table[@class='reference']") 
myXML <- saveXML(urlParse[[1]]) 
write(myXML, file = "file.txt") 

或者乾脆

saveXML(urlParse[[1]], file = "file.txt")