Извлечение значений <tr> из нескольких файлов HTML
Я новичок в веб-слом. У меня более 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, примененный к объекту класса "персонаж"
Что я делаю не так?
Чтобы извлечь в dataframe, у меня есть этот код
u <- as.data.frame(matrix(mydata,byrow = TRUE),stringsAsFactors = FALSE)
Заранее спасибо.
1 ответ
Решение
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))