HTML Diff
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) &gt; 0) { page &lt;- read_html(URLnext) url_node &lt;- html_nodes(page, '.right') ### перейти к След. странице URLnext &lt;- gsub("\\&amp;sid\\=.+\\&amp;start", "\\&amp;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) &gt; 0) { page &lt;- read_html(URLnext) url_node &lt;- html_nodes(page, '.right') ### перейти к След. странице URLnext &lt;- gsub("\\&amp;sid\\=.+\\&amp;start", "\\&amp;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