Сохранение и повторная загрузка .xml файлов, извлеченных из веб-поиска - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в использовании R для веб-приложений.Я разработал удобную функцию read.html для очистки нескольких страниц, каждая из которых имеет идентичную структуру страницы.Я хочу сохранить исходные данные .xml (или html) каждой страницы и заново загрузить их, чтобы потом поработать над ними.Но исходный формат, в котором я его очищаю, не так просто сохранить и загрузить заново.Ниже приведен пример того, как я пытался (и не смог) сохранить одну страницу.

В целом, я хотел бы использовать систематический способ хранения всех страниц, которые я удалил, чтобы я мог повторно загрузить их и затем использовать функции применения для анализа всех из них.Это возможно?

Вот код:

rm(list=ls(all=TRUE))
library('rvest')
library(dplyr)
library(jsonlite)
library(pander)
library(stringr)
library(purrr)
library(xml2)
library(XML)


url_test <- "http://www.winemag.com/?s=washington merlot&drink_type=wine&page="
pages <- c(1:5)

test.url.list <- paste0("http://www.winemag.com/?s=washington merlot&drink_type=wine&page=", pages)
test.webpages <- lapply(test.url.list,read_html)

# This produces some data: 
html_text (html_node(test.webpages[[1]], 'body > div.off-canvas-wrap > div > section > section > div:nth-child(2) > div.large-9.columns > div.results-section.reviews.center-column > div.results > ul > li:nth-child(2) > a > div.title'))

# This gets data from all pages. 
mapply(html_text, mapply(html_nodes, meta.webpages, 'body > div.off-canvas-wrap > div > section > section > div:nth-child(2) > div.large-9.columns > div.results-section.reviews.center-column > div.results > ul > li:nth-child(2) > a > div.title'))

#Now I try to save one of the pages: 
write_xml(test.webpages[[1]], "tester2.xml",options="as_xml")
test.reload <- xmlParse("tester2.xml")

# When I run it, I get data back.... But it is in an xml file - not on 2 seperate items in a list. 
test.reload

# I can't extract the data. 
html_text (html_node(test.reload, 'body > div.off-canvas-wrap > div > section > section > div:nth-child(2) > div.large-9.columns > div.results-section.reviews.center-column > div.results > ul > li:nth-child(2) > a > div.title'))

...