我抓取與rvest的一個研究項目,一個網站,我遇到兩個問題:抓取與rvest網站(改變頁面,點擊鏈接)
1)我的循環似乎是重複的拼搶一遍又一遍的相同頁面,而不是轉到以下頁面。
2)我無法訪問我正在刮的鏈接的全文。換句話說,我不僅想要刮取搜索結果,而且要顯示每個顯示的鏈接的內容。我有代碼在每個單獨的頁面上執行此操作(請參閱下文),但由於有2600個鏈接,因此我想將它們各自的內容集成到抓取中(就像rvest在每個鏈接上「點擊」並抓取它們內容)。
背景:法國政府頁面。我正在尋找所有含有「inegalites de sante」字樣的內容。這給出了近似2600個結果,每個頁面顯示30個結果。因此,我運行了88次循環來收集所有結果。然而,它一次又一次地給了我30個相同的結果,而且只是在每個結果的下面,而不是每個話語的全文,都要抄下小文本的引文。
library(rvest)
library(purrr)
url_base <- "http://www.vie-publique.fr/rechercher/recherche.php?replies=30&query=inegalites+de+sante&typeloi=&filter=&skin=cdp&date=1&auteur=&source=&typeDoc=&date=&sort=&filtreAuteurLibre=&dateDebut=&dateFin=&nbResult=2612&q="
map_df(1:88, function(i) {
# Progress indicator
cat(".")
pg <- read_html(sprintf(url_base, i))
data.frame(date=html_text(html_nodes(pg, ".date")),
text=html_text(html_nodes(pg, ".recherche_montrer")),
title=html_text(html_nodes(pg, ".titre a")),
stringsAsFactors=FALSE)
}) -> viepublique_data
dplyr::glimpse(viepublique_data)
write.xlsx(viepublique_data, "/Users/Etc.Etc./viepublique_data.xlsx")
這裏是代碼,我會用刮每一個人頁面以獲取全文,以第一話語(沒有「103000074」)爲例:
#### Code to scrape each individual page
website <- read_html("http://discours.vie-publique.fr/notices/103000074.html")
section <- website %>%
html_nodes(".level1 a")
section
subsection <- website %>%
html_nodes(".level2 p")
subsection
person <- website %>%
html_nodes("p:nth-child(2) , .article p:nth-child(1)")
person
text <- website %>%
html_nodes(".col1 > p")
text
title <- website %>%
html_nodes("h2")
title
非常感謝您的幫助!
'sprintf(url_base,1:88)'返回88次相同的URL。你希望'sprintf'能做什麼? – MrFlick
@MrFlick我認爲它會改變頁面88次(如點擊「下一步」),這顯然不是這裏的情況。 – Evelyne1991
一般人會想到硒,如果有人點擊鏈接。 –