Я пытаюсь понять, когда команды xml2 / rvest действительно запрашивают веб-сайт и когда необходимо указывать заголовки, чтобы избежать передачи заголовков по умолчанию.
library(httr)
library(xml2)
library(rvest)
url <- "http://testing-ground.scraping.pro"
#open session, passing headers
s <- paste0(url, "/textlist") %>% html_session(add_headers(
"user-agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0",
"Accept" = "text/css,*/*;q=0.1",
"Accept-Language" = "en-US,en;q=0.5",
"Accept-Encoding" = "gzip, deflate, br"))
#scrape path list, assuming headers need not be passed again
url_list <- s %>% html_nodes(xpath=".//a[contains(text(), 'Text list')]") %>% html_attr("href")
#Concatenate base URL and scraped paths
url_list <- paste0(url, url_list)
#scrape web page, assuming headers need not be passed again
h <- s %>% jump_to(url_list[1]) %>% read_html()
Мой взгляд на приведенный выше код что веб-сайт запрашивается три раза: 1) при открытии сессии, 2) при очистке путей, 3) при очистке веб-страницы. Передачи заголовков при открытии сеанса достаточно, и те же заголовки будут повторно использованы в следующих командах, которые используют один и тот же сеанс.
Это правильно? Будут ли файлы cookie (и другая неуказанная информация заголовка) также сохраняться в сеансе и снова передаваться на веб-сайт?