我是网络报道新手。我有3000多个html / htm文件,我需要从中提取“tr”值并在数据帧中进行转换以进行进一步分析。
我使用的代码是:
html <- list.files(pattern="\\.(htm|html)$")
mydata <- lapply(html,read_html)%>%
html_nodes("tr")%>%
html_text()
UseMethod(“xml_find_all”)中的错误: 没有适用于'xml_find_all'的方法适用于类“character”的对象
我做错了什么?
要在数据框中提取,我有这段代码
u <- as.data.frame(matrix(mydata,byrow = TRUE),stringsAsFactors = FALSE)
提前谢谢。
答案 0 :(得分:2)
lapply
将输出文档列表。那不能由read_html
处理。而是在rvest
中包含所有lapply
个操作:
html <- list.files(pattern="\\.(htm|html)$")
mydata <- lapply(html, function(file) {
read_html(file) %>% html_nodes('tr') %>% html_text()
})
示例强>
在我的WD中有两个测试文件,内容为
<html>
<head></head>
<body>
<table>
<tr><td>Martin</td></tr>
</table>
</body>
</html>
和
<html>
<head></head>
<body>
<table>
<tr><td>Carolin</td></tr>
</table>
</body>
</html>
会输出
> mydata
[[1]]
[1] "Martin"
[[2]]
[1] "Carolin"
在我的情况下,我可以使用
格式化它data.frame(Content = unlist(mydata))