#r #web-scraping #download #data-mining
#r #веб-очистка #Скачать #интеллектуальный анализ данных
Вопрос:
Меня интересует этот файл Excel, структура которого не меняется: https://rigcount.bakerhughes.com/static-files/cc0aed5c-b4fc-440d-9522-18680fb2ef6a
Который я могу получить с этой страницы: https://rigcount.bakerhughes.com/na-rig-count
Последний URL-адрес не меняется со временем, в то время как первый меняется.
Но я предполагаю, что URL-адрес файла находится где-то в элементах фиксированной веб-страницы, даже если он изменен, и генерация имени файла выполняется повторяющейся процедурой.
Таким образом, есть ли способ в R получить файл (который обновляется каждую неделю или около того) автоматически, не загружая его каждый раз вручную?
Ответ №1:
Вы пропустили ту часть вопроса, в которой вы говорите о том, что вы сделали. Или поиск в Интернете учебных пособий. Но это было легко сделать здесь. Вам нужно будет посмотреть руководство по rvest для получения дополнительных объяснений.
library(rvest) # to allow easy scraping
library(magrittr) # to allow %>% pipe commands
page <- read_html("https://rigcount.bakerhughes.com/na-rig-count")
# Find links that match excel type files as defined by the page
links <- page %>%
html_nodes("span.file--mime-application-vnd-ms-excel-sheet-binary-macroEnabled-12") %>%
html_nodes("a")
links_df <- data.frame(
title = links %>% html_attr("title"),
link = links %>% html_attr("href")
)
links_df
title
# 1 north_america_rotary_rig_count_jan_2000_-_current.xlsb
# 2 north_american_rotary_rig_count_pivot_table_feb_2011_-_current.xlsb
# link
# 1 https://rigcount.bakerhughes.com/static-files/cc0aed5c-b4fc-440d-9522-18680fb2ef6a
# 2 https://rigcount.bakerhughes.com/static-files/c7852ea5-5bf5-4c47-b52c-f025597cdddf
Комментарии:
1. Я заблудился в инструменте разработчика Google Chrome, пытаясь найти некоторые файлы json, так что на самом деле ничего подобного. Спасибо
2. Поиск файла данных на вкладке сеть — отличное место для начала. Может быть даже один. Но этот сайт довольно прост и занимает всего одну страницу в день. Поэтому было проще просто найти рабочий html-класс для идентификации на странице.