-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSelenium_FI.R
More file actions
144 lines (97 loc) · 4.04 KB
/
Selenium_FI.R
File metadata and controls
144 lines (97 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
install.packages("RSelenium")
library(RSelenium)
remDr <- rsDriver(browser = "firefox")$client
# Si problème de port déjà utilisé
# remDr <- rsDriver(port=4568L, browser = "firefox")$client
# Ouvrir ou fermer le navigateur
# remDr$open()
# remDr$close()
url <- "https://lafranceinsoumise.fr/actualites/mouvement/"
# Ouvrir une page web
remDr$navigate(url)
# Récupération des actualités
# remDr$findElements -> Liste (de 0 à N)
# remDr$findElement -> objet (uniquement le premier de la liste, et erreur si 0)
# remDr$findElements("xpath","chemin")
# remDr$findElement("xpath","chemin")
liste_actu <- remDr$findElements("xpath", "//div[@class='elementor-post__card']")
# Focus sur la première actualité
actu <- liste_actu[[1]]
# Récupération du titre
# actu$findChildElements -> Pour extraire à partir d'un élément d'une page, et non à partir de la page complète
# Egalement : différence entre extraction de liste et d'objet :
# actu$findChildElement
# actu$findChildElements
# Ici, on s'attend à avoir un seul titre :
titre <- actu$findChildElement("xpath", ".//h3[@class='elementor-post__title']")
# Extraction du contenu ou du texte de la balise
# getElementText : récupérer le texte
# getElementAttribute : récupérer un attribut
titre$getElementText()
# Attention, getElementText renvoit une liste
titre$getElementText()[[1]]
titre <- actu$findChildElement("xpath", ".//h3[@class='elementor-post__title']")$getElementText()[[1]]
# URL
url_texte <- actu$findChildElement("xpath", ".//h3[@class='elementor-post__title']/a")$getElementAttribute("href")[[1]]
# Résumé
resume <- actu$findChildElement("xpath", ".//div[@class='elementor-post__excerpt']")$getElementText()[[1]]
# Mot clef
# Ici, test si mot-clef absent : findChildElements
mot_cle <- actu$findChildElements("xpath", ".//div[@class='elementor-post__badge']")
if (length(mot_cle) > 0){
mot_cle <- mot_cle[[1]]$getElementText()[[1]]
}else{
mot_cle <- NA
}
###
# Gestion des onglets
###
# Il est nécessaire d'ouvrir à l'avance le nombre d'onglets souhaités
# Liste des onglets actuels
liste_tab <- remDr$getWindowHandles()
# ID de l'onglet actuel
# remDr$getCurrentWindowHandle()
# Changer d'onglet
remDr$switchToWindow(liste_tab[[1]])
remDr$switchToWindow(liste_tab[[2]])
# Page de l'article
remDr$navigate(url_texte)
# Extraire le texte
texte <- remDr$findElement("xpath", "//div[@class='entry-content']")$getElementText()[[1]]
# Temps de lecture
tps_lecture <- remDr$findElement("xpath","//span[@class ='bsf-rt-display-time']")$getElementAttribute('reading_time')[[1]]
###
# Quelques commandes supplémentaires
###
# Aller vers le haut ou le bas de la page (scroll automatique)
webElem <- remDr$findElement("css", "body")
webElem$sendKeysToElement(list(key = "end"))
webElem$sendKeysToElement(list(key = "home"))
# Petits mouvements haut ou bas
webElem$sendKeysToElement(list(key = "down_arrow"))
webElem$sendKeysToElement(list(key = "up_arrow"))
# Liste des commandes possibles
names(selKeys)
# Cliquer sur un élément
remDr$switchToWindow(liste_tab[[1]])
liste_actu <- remDr$findElements("xpath", "//div[@class='elementor-post__card']")
actu <- liste_actu[[1]]
titre <- actu$findChildElement("xpath", ".//h3[@class='elementor-post__title']")
titre$clickElement()
# Retour arrière / avant
remDr$goBack()
remDr$goForward()
# Faire un screenshot de la page
name_file <- paste('test',id_boucle,'.png',sep="")
remDr$screenshot(file = name_file)
# Se loguer sur un site web (NE MARCHE PAS ICI)
mail <- remDr$findElement("xpath", "//input[@name='name']")
password <- remDr$findElement("xpath", "//input[@id='pass']")
mail$sendKeysToElement(list("votre_mail"))
password$sendKeysToElement(list("votre_password"))
password$sendKeysToElement(list(key = "enter"))
Sys.sleep(2)
# Exemple de récupération selon le texte
"//balise[contains(text(),'texte du bouton')]"
"//balise[contains(@class,'texte de attribut)]"
"OU //balise[contains(class,'texte de attribut)]"