Merci à vous deux,
La partie envoyez par umfred à l'air de fonctionner, par contre j'ai fait une boucle pour voir si il y avait besoin de recliquer ou non ...
et malheureusement il faut recliqué c'est normal ?
Version imprimable
Merci à vous deux,
La partie envoyez par umfred à l'air de fonctionner, par contre j'ai fait une boucle pour voir si il y avait besoin de recliquer ou non ...
et malheureusement il faut recliqué c'est normal ?
Au temps pour moi xD
ça ne fonctionne toujours pas :? je me prend cette erreur:Code:
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 import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager from selenium.webdriver.common.keys import Keys from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.service import Service options = Options() options.add_argument("-profile") options.add_argument('/Applications/Firefox.app/Profiles/jhfgn7bj.default-release') s = FirefoxService(GeckoDriverManager().install()) liste_lien = ["https://lien1", "https://lien2","lien3"] i = 0 for lien in liste_lien: driver = webdriver.Firefox(service=s, options=options) driver.get(lien) if i == 0: ok = False while not ok: try: bouton_dispo = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'fc-primary-button'))) except: ok = False else: boutton = driver.find_element(by=By.CLASS_NAME, value='fc-primary-button') # boutton = driver.find_element(By.LINK_TEXT, 'I understand') boutton.click() ok = True if i != 0: time.sleep(10) lien_source = driver.find_element(by=By.CLASS_NAME, value='scan-page') print(lien_source.get_attribute("src")) # Target the element using the href value # In actual, search for an anchor tag and # among anchor tags, select the one with # given href value print() ok = True try: driver.switch_to.window(driver.window_handles[1]) except: pass else: driver.close() driver.switch_to.window(driver.window_handles[0]) driver.close() ok = False if ok: driver.close() i += 1
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 File "/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP/selemium.py", line 24, in <module> driver = webdriver.Firefox(service=s, options=options) File "/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP/venv/lib/python3.10/site-packages/selenium/webdriver/firefox/webdriver.py", line 197, in __init__ super().__init__(command_executor=executor, options=options, keep_alive=True) File "/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 288, in __init__ self.start_session(capabilities, browser_profile) File "/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 381, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 444, in execute self.error_handler.check_response(response) File "/Users/mbook12/Masterclass-Python-Algorithmes-TraitementDonnées/SCRAP/venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 249, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.SessionNotCreatedException: Message: Failed to set preferences: Unable to write Firefox profile: No such file or directory (os error 2)
j'éviterais déjà d'appeler mon script selenium.py (même nom que le package selenium, pourrait être risque de confusion)
Ensuite il faut avoir des droits d'écriture sur '/Applications/Firefox.app/Profiles/jhfgn7bj.default-release' (et que le répertoire existe)
Salut umfred merci
je viens de changer le nom du script ^^ et du coup si je comprend bien je peux mettre le chemin que je veux pour ça:
du moment que je puisse écrire dessus ?Code:options.add_argument('/Applications/Firefox.app/Profiles/jhfgn7bj.default-release')
Dans l'exemple que j'ai mis le répertoire correspond à MON répertoire de "profile" de firefox le tien doit avoir un autre nom , il faut utiliser le finder pour naviguer jusqu'à l'endroit où il y a TON répertoire de profile pour savoir son nom . Sinon tu peux utiliser n'importe quel répertoire du moment que tu peux écrire dedans. Mais il faut de préférence qu'il soit vide au départ.
Tu trouveras ton profil Firefox en tapant dans l'url du navigateur : about:profiles
Le mieux c'est de créer un nouveau profil et surtout d'éviter d'utiliser le profil par défaut.
J'ai fait comme Jurassic a dit et ça fonctionne
Je ne regrette pas de m'être inscrit sur ce forum ^^
MERCI À TOUS :D:D
Je met le code qui m'a permis de tester si c'était ok ou non pour d'autre personnes au cas où:
Code:
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 import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.service import Service options = Options() options.add_argument("-profile") options.add_argument('/Users/mbook12/Desktop/profilfirefox') s = FirefoxService(GeckoDriverManager().install()) liste_lien = ["https://lien1", "https://lien2", "https://lien3"] i = 0 for lien in liste_lien: driver = webdriver.Firefox(service=s, options=options) driver.get(lien) if i == 0: ok = False while not ok: try: bouton_dispo = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'fc-primary-button'))) except: ok = False else: boutton = driver.find_element(by=By.CLASS_NAME, value='fc-primary-button') # boutton = driver.find_element(By.LINK_TEXT, 'I understand') boutton.click() ok = True if i != 0: time.sleep(3) lien_source = driver.find_element(by=By.CLASS_NAME, value='scan-page') print(lien_source.get_attribute("src")) print() ok = True try: driver.switch_to.window(driver.window_handles[1]) except: pass else: driver.close() driver.switch_to.window(driver.window_handles[0]) driver.close() ok = False if ok: driver.close() i += 1