Rvest и редирект
2026-03-10 00:33 Diff

Теги: rvest, редирект, r, парсинг данных, постраничный обход, xpath

В сети хорошо описан парсинг данных с отдельной веб-страницы, а редирект между страницами почему то обойдён вниманием. Устраним этот недостаток.

Так как данные скачивались со стороннего ресурса, вариант многопоточной загрузки был отвергнут с целью уберечь админов выпарсиваемого форума от стрессов и нервных потрясений, поэтому был выбран постраничный обход с использованием цикла while.

Кусок кода, ответственного за переход к следующей странице на очередной итерации:

while (length(URLnext) > 0) { page <- read_html(URLnext) url_node <- html_nodes(page, '.right') ### перейти к След. странице URLnext <- gsub("\\&sid\\=.+\\&start", "\\&start", gsub("\\.\\/", "http://socioforum.su/", html_attr(url_node, "href"))) ``` Синтаксис и нахождение **xpath** или **css selector** (в данном примере для функции `html_nodes`) подробно описаны в примерах в сети, полагаю, нет смысла повторяться. Индикация перехода к следующей теме форума: ```r print("################### NEXT TOPIC ######################") print(i) cat("################### NEXT TOPIC ######################", file = "log.txt", fill = T, append = T) cat(i, file = "log.txt", fill = T, append = T) }

При завершении итерации на экран и в лог выводится строка:

################### NEXT TOPIC ######################

и номер URL_а темы.

При этом: — URL_ы сохранялись в файл URL.txt; — i — номер итерации и номер строки файла URL.txt; — индикация номера страницы при выкачивании многостраничной темы в данном парсере не использовалась.