R: Как веб-очистить таблицу на нескольких страницах с одним и тем же URL - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы очистить таблицу от: https://www.eurofound.europa.eu/observatories/emcc/erm/factsheets

Этот URL-адрес не изменяется, но таблица содержит несколько страниц.

Я хотел бы сделать это в R и без использования html_sessions () (так как я достигаю предела памяти).

Я получаю первую страницу, используя:

library(magrittr)
library(rvest)

url <- "https://www.eurofound.europa.eu/observatories/emcc/erm/factsheets"
utils::download.file(url, destfile = "scrapedpage.html", quiet=TRUE)
input <- xml2::read_html("scrapedpage.html") 

table <- input %>%
  html_nodes("table") %>%
  html_table(header=T)

Любая помощь наиболее ценится - спасибо.

1 Ответ

2 голосов
/ 05 мая 2020

У вас есть 1838 страниц, чтобы получить. Пример с 10 первыми страницами:

library(xml2)
library(RCurl)
library(dplyr)
library(rvest)

i=1
table = list()
for (i in 1:10) {
  data=getURL(paste0("https://www.eurofound.europa.eu/observatories/emcc/erm/factsheets","?page=",i))
  page <- read_html(data)
  table1 <- page %>%
    html_nodes(xpath = "(//table)[2]") %>%
    html_table(header=T)
  i=i+1
  table1[[1]][[7]]=as.integer(gsub(",", "",table1[[1]][[7]]))
  table=bind_rows(table, table1)
  print(i)}

table$`Announcement date`=as.Date(table$`Announcement date`,format ="%d/%m/%Y")

Примечания:

i=1: i - переменная для приращения. table = list(): создать пустой список (обязательно для первого шага "bind_rows"). 1:10: с первой по десятую страницу (должно быть 1: 1838). paste0: генерировать каждый раз новый URL. //table[2]: таблица интересов. as.integer(gsub): обязательно для шага "bind_rows". Столбцы каждого списка для привязки должны быть одного типа. Столбец 7 может быть напечатан как символ из-за ,. print(i): быть информированным о прогрессе. as.Date: последний шаг для преобразования первого столбца в правильный тип.

Другие варианты: вы можете загрузить все страницы за пределами l oop в объекте, а затем обработать его. Может быть, загрузка всех страниц с помощью DTA, а затем их разбор в R будет быстрее.

Вывод: RScrape

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...