使用xpath将已解析的html写入R中的文件

时间:2014-10-28 01:18:48

标签: html r xpath web-scraping

我将解析后的html写入文件时遇到问题。我从xpath指定的表中获取此数据但是当我尝试将其写入文件时,我得到“cat(list(...))中的错误。”

> 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]。不知道为什么。

1 个答案:

答案 0 :(得分: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")