Преобразование текстового файла с веб-сайта в таблицу

Вопрос или проблема

Я пытаюсь преобразовать файл htm, содержащий текстовые таблицы, в датафрейм. Я посмотрел на предыдущие вопросы здесь и здесь, но не решил свою проблему. Таблица получается испорченной.

Следующий воспроизводимый пример.

# URL сайта 
  url <- paste0("https://www.uspto.gov/web/offices/ac/ido/oeip/taf/st_co_93.htm") 
  
# Чтение HTML-кода страницы, касающегося интересующей таблицы
  html_code <- paste(readLines(url))[44:99]
  
# Преобразование текста в таблицу
  table_df <- read.table(text = html_code, skip = 3, fill = NA, 
                         col.names = c("КОД", "ШТАТ/СТРАНА", "ПОЛЬЗА", "ДИЗАЙН", "РАСТЕНИЕ","ПОВТОР","ВСЕГО","SIRS"))
  

Ответ или решение

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

Этап 1: Чтение HTML-кода

Первым шагом будет загрузка HTML-кода таблицы с указанного веб-сайта. Данный шаг вы уже начали выполнять. Чтобы убедиться, что мы получаем корректный HTML-контент, необходимо обработать его с учётом структуры документа. Вместо того чтобы просто использовать строку readLines(url), стоит воспользоваться пакетами для работы с HTML. Рекомендуется использовать rvest для более точного извлечения нужной таблицы.

library(rvest)

# URL целевого сайта
url <- "https://www.uspto.gov/web/offices/ac/ido/oeip/taf/st_co_93.htm"

# Загрузка HTML-кода
html <- read_html(url)

# Извлечение таблицы
table <- html %>%
  html_node("table") %>%
  html_table(fill = TRUE)

Этап 2: Обработка данных

После того как вы вытащили таблицу с помощью html_table, следующим шагом будет обработка данных. Данные могут требовать очистки или преобразования типов.

# Просмотр первых строк таблицы
head(table)

# Удаление ненужных строк (если требуется)
table <- table[-(1:3), ]

# Переименование столбцов, если это необходимо
colnames(table) <- c("CODE", "STATE_COUNTRY", "UTILITY", "DESIGN", "PLANT", "REISSUE", "TOTALS", "SIRS")

Этап 3: Преобразование в датафрейм

В случае, если данные извлечены в корректном формате, они уже будут представлять собой датафрейм. Если необходимо, можно дополнительно привести данные к необходимым типам (например, числовым для количественных показателей):

# Преобразование столбцов в нужные типы
table$UTILITY <- as.numeric(table$UTILITY)
table$DESIGN <- as.numeric(table$DESIGN)
table$PLANT <- as.numeric(table$PLANT)
table$REISSUE <- as.numeric(table$REISSUE)
table$TOTALS <- as.numeric(table$TOTALS)
table$SIRS <- as.numeric(table$SIRS)

# Проверка итогового датафрейма
str(table)

Заключение

Теперь у вас есть полностью обработанный датафрейм, который можно использовать для дальнейшего анализа данных. Имейте в виду, что структура HTML-страницы может изменяться, поэтому данный код может потребовать корректировок в будущем. Если вы столкнетесь с проблемами при считывании и преобразовании данных, стоит проверить исходный HTML-код на предмет изменений или обратиться к документации пакета rvest для уточнения методов работы с таблицами.

Оцените материал
Добавить комментарий

Капча загружается...