Как выполнить итерацию до последней страницы веб-сайта и записать данные строка за строкой в ​​файл .csv?

Я пытаюсь очистить некоторые действительно объявления о вакансиях для личных вещей (код ниже), однако в настоящее время мне нужно дойти до последней страницы, чтобы узнать, каков ее "индекс" или номер страницы, тогда я могу перейти от первого к Последняя страница.

Я хотел, чтобы это было автоматическим, где я предоставляю только URL-адрес, а функция позаботится обо всем. Может ли кто-нибудь мне помочь? Кроме того, поскольку я буду очищать пару сотен страниц, я боюсь, что меня выгонят, поэтому я хотел получить как можно больше данных, поэтому у меня есть запись в файл csv, как в примере ниже. Есть ли способ сделать это лучше?

На самом деле не дал мне ключ API, так что это единственный известный мне метод. Вот код:

## squencing the pages based on the result (here i just did 1 page to 5th page)
page_results <- seq(from = 10, to = 50, by = 10)

first_page_url <- "https://www.indeed.com/jobs?q=data+analyst&l=United+States"

for(i in seq_along(page_results)) {

   Sys.sleep(1)
   url <- paste0(first_page_url, "&start=", page_results[i]) #second page will have url+&start= 20 and so on.

   page <- xml2::read_html(url)

   #### 
   #bunch of scraping from each page, method for that is implemented already
   #....
   ####

   print(i) #prints till fifth page, so i will print 1 to 5

   #I also wanted to write CSV line by line so if some error happens I atleast get everythinh pre-error
   # do you anything efficient than this? 
   write.table(as.data.frame(i), "i.csv", sep = ",", col.names = !file.exists("i.csv"), append = T)
}

person WolfgangBagdanow    schedule 14.04.2020    source источник
comment
Я думаю, что ручной подход, когда вы решаете указать начало и конец страницы, имеет больше смысла и удобен для очистки, потому что вы можете контролировать, сколько страниц вы хотите получить (плюс уважает серверы компании). Вы знаете, что через некоторое время вы видите те же описания вакансий. Так что, на мой взгляд, придерживайтесь нынешнего подхода. Что касается записи файла .csv на итерацию, я думаю, что это нормально. Кто-то лучше меня обязательно должен что-то сказать. Потому что у меня еще недостаточно знаний по R.   -  person CaseebRamos    schedule 15.04.2020


Ответы (1)


Я последовал этому совету и хотел закрыть этот ответ, чтобы уменьшить количество открытых вопросов. Так ответил на мой собственный вопрос. Спасибо сообществу SO за то, что всегда помогаете.

«Я думаю, что ручной подход, когда вы решаете указать начало и конец страницы, имеет больше смысла и« удобный для парсинга », потому что вы можете контролировать, сколько страниц вы хотите получить (плюс уважаете серверы компании). Вы знаете, через некоторое время вы видите те же описания должностей. Так что придерживайтесь текущего подхода, на мой взгляд. Что касается написания файла .csv для каждой итерации, я думаю, что это нормально. Кто-то лучше меня обязательно должен что-то сказать. Потому что у меня еще недостаточно знаний в R. " - UltaPitt

person WolfgangBagdanow    schedule 30.04.2020