我知道如何在頁面分頁時循環,但我希望在一個循環函數中抓取多個信息/ html_nodes
,但我不確定是否可以設置它。到目前爲止,我嘗試了以下。這基本上是一個jobsearch網站,我想要公司名稱,公司名稱和公開職位的數量。Rvest在一個函數中抓取多個數據
我用sprintf
來得到第1-14頁。
urlingtek <- sprintf("https://www.jobindex.dk/virksomhedsoversigt/kanal/ingenioer?page=%d", 1:14)
我已經做了一個循環,它可以抓取一個數據源。
company <- function(virksomhed){
company %>% read_html() %>%
html_nodes('.jix_company_name_link a') %>%
html_text()
}
virk <- lapply(urlingtek, virksomhed)
但我希望儘可能一次性清除所有的設備。
我一直在使用
jobvirksom <- function(alt){
alt %>%
read_html() %>%
html_nodes('.jix_company_name_link a') %>%
html_text()
html_nodes('.jix_companyindex_overview_ad_content') %>%
html_text()
html_nodes('.jix_active a') %>%
html_text()
}
到目前爲止,沒有任何的運氣到目前爲止已經試過。如果我可以一次刮完所有東西,將會好得多,按lapply
並將其變爲一個列表。
您不會將數據傳遞給函數中的兩個'html_nodes'調用。同時查看'purrr :: map_df',這可以使多個字段組合成一個數據框更容易。 – alistaire
所以把ALT%>%read_html盈方最後的html_nodes應該修復它? – ReneKJ
可能不是,因爲它看起來像你想把同樣的事情傳遞給第二個和第三個'html_nodes'調用。更可能的是,你需要將第一個管道的結果保存到變量中,並將其傳遞給其他變量,或者使用'lapply' /'purrr :: map'遍歷第一個節點集合,找到它的每個部分試圖提取,並將它們組裝成一個列表或data.frame。 – alistaire