#r #web-scraping #web-scraping-language
Вопрос:
Это образец кода, который я создал. Мне удалось создать новую ссылку, но я не понимаю, как перейти по ссылке и удалить данные из следующей ссылки.
library(tidyverse)
library(rvest)
library(xml2)
url<-"https://www.indeed.com/jobs?q=data analystamp;l=San Diego, CAamp;vjk=0c2a6008b4969776"
page<-xml2::read_html(url)#function will read in the code from the webpage and break it down into different elements (<div>, <span>, <p>, etc.
#get job title
title<-page %>%
html_nodes(".jobTitle") %>%
html_text()
#get company Location
loc<-page %>%
html_nodes(".companyLocation") %>%
html_text()
#job snippet
page %>%
html_nodes(".job-snippet") %>%
html_text()
#Get link
desc<- page %>%
html_nodes("a[data-jk]") %>%
html_attr("href")
# Create combine link
combined_link <- paste("https://www.indeed.com", desc, sep="")
Как мне перейти по комбинированной ссылке и удалить данные с новой страницы и можно ли это сделать без использования функции?
Комментарии:
1. Разве ты не можешь пользоваться
read_html(combined_link)
, как в первый раз? Возможно, я запутался в том, что вы собираетесь здесь делать.2. Спасибо, да, я пробовал это, но я получаю сообщение об ошибке «Ошибка:
x
должна быть строка длиной 1″.3. страница 1 <- html_session(combined_link[[1]]) страница 1 %>% html_nodes(«.iCIMS_JobContent, #jobDescriptionText») %<- html_session(combined_link[[1]]) страница 1 %>>% html_text() #этот код работает, но теперь я хотел бы создать функцию#, которая будет извлекать содержимое для каждой страницы, используя эту информацию
4.
ret <- lapply(paste0("https://www.indeed.com", desc), xml2::read_html)
вернет список возвращаемых страниц, для которых вы можете индивидуально очистить нужные вам данные.5. Не смущайся! Не уверен точно (я не запускаю ваш код), но, возможно
lapply(setNames(nm=paste0("https://www.indeed.com", desc)), xml2::read_html)
, для исходного вызова, или если вы уже созданыret
, можете ли вы простоnames(ret) <- desc
или аналогично? (Я предполагаю, что название очевидно в элементахdesc
. Если нет, то это просто другой вопрос, и … к сожалению, я не запустил ваш код и в данный момент не могу …)