0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: rvest, редирект, r, парсинг данных, постраничный обход, xpath</p>
1
<p>Теги: rvest, редирект, r, парсинг данных, постраничный обход, xpath</p>
2
<p>В сети хорошо описан парсинг данных с отдельной веб-страницы, а редирект между страницами почему то обойдён вниманием. Устраним этот недостаток.</p>
2
<p>В сети хорошо описан парсинг данных с отдельной веб-страницы, а редирект между страницами почему то обойдён вниманием. Устраним этот недостаток.</p>
3
<p>Так как данные скачивались со стороннего ресурса, вариант многопоточной загрузки был отвергнут с целью уберечь админов выпарсиваемого форума от стрессов и нервных потрясений, поэтому был выбран<strong>постраничный обход с использованием цикла while</strong>.</p>
3
<p>Так как данные скачивались со стороннего ресурса, вариант многопоточной загрузки был отвергнут с целью уберечь админов выпарсиваемого форума от стрессов и нервных потрясений, поэтому был выбран<strong>постраничный обход с использованием цикла while</strong>.</p>
4
<p>Кусок кода, ответственного за переход к следующей странице на очередной итерации:</p>
4
<p>Кусок кода, ответственного за переход к следующей странице на очередной итерации:</p>
5
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) }<p>При завершении итерации на экран и в лог выводится строка:</p>
5
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) }<p>При завершении итерации на экран и в лог выводится строка:</p>
6
################### NEXT TOPIC ######################<p>и номер URL_а темы.</p>
6
################### NEXT TOPIC ######################<p>и номер URL_а темы.</p>
7
<p>При этом: - URL_ы сохранялись в файл URL.txt; - i - номер итерации и номер строки файла URL.txt; - индикация номера страницы при выкачивании многостраничной темы в данном парсере не использовалась.</p>
7
<p>При этом: - URL_ы сохранялись в файл URL.txt; - i - номер итерации и номер строки файла URL.txt; - индикация номера страницы при выкачивании многостраничной темы в данном парсере не использовалась.</p>
8
8