Dans le cadre de mon stage je dois automatiser une extraction de donnée d'un site qui requiert un user et mdp en python.
J'ai essayer quelque manipulation mais je n'y arrive pas.
Auriez vous des pistes pour moi ainsi que des tutos.
J'aimerais bien vous mettre le lien du site et les différentes indications mais c'est l'intranet de ma boite et il faut être sur le LAN ou avoir un VPN pour y accéder.
Je ne suis pas très fort là dedans et il me semble que c'est très variable d'une construction de site à l'autre... J'utilise par exemple mechanize pour un vieux site mais je n'ai pas réussi à l'adapter pour Facebook à l'époque.
Jai commencé a écrire un script python avec la Library sélénium pour automatiser le processus mais je rencontre certaines difficulté.
J'arrive a ouvrir le navigateur avec mon code mais je n'arrive pas a insérer mon url de recherche et a simuler le click de la touche entrer.
Ci-joint le code.
PS: Le site est privée donc il est impossible d'y accéder sans le vpn de la boite
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#Site sur lequel je veux me retrouver
url = "https://kador3.dalkia.net/installation.php"
#Je lance chrome.
driver = webdriver.Chrome(executable_path='C:\Program Files\Google\Chrome\Application\Chrome.exe')
#Jai reccuperer le xpath de la barre de recherche Chrome
element = driver.find_element_by_id("input")
#J'insere mon URL dans la barre de recherche
element.send_keys(url)
#Je simule la touche le click entrer
elem.send_keys(Keys.ENTER)
Bonjour umfred, Merci pour ton intervention, j'ai rajouter driver.get(url) mais je n'arrive toujours pas a lancer la recherche de mon url. Jai fait des recherches au sein de notre DSI et ils m'ont clairement dit que leurs sécurités empêche ce genre de script d'agir sur leur réseau. Cependant ya un mec dans un autre service qui arrive a aller sur chrome lancer une recherche et télécharger le fichier quil veut avec du VBA combiner a du shell... Peut être que je dois me tourner vers cette option?
- Edité par MrCerritulus 2 décembre 2021 à 8:29:42
Parce que s'il y a des sécurités, c'est que les bots sont certainement interdits par leurs CGU. Et ce que tu cherches à faire est donc illégal.
- Edité par thelinekioubeur il y a environ 1 heure
Re thelinekioubeur c'est le site de la boite ou je bosse.
Il nous sert a faire des exports de données.
Avant, cela était possible mais récemment ils ont eut une cyberattaque.
Jai fais le script vba et a ma grande surprise ca fonctionne. Mais je n'arrive pas a cliquer sur le bouton export du site. Si joint mon algo VBA ainsi que des screen shot du site.
Sub TestAuto()
Application.StatusBar = "Ouverture chrome"
Dim chromePath As String
Dim URL As String
Set Wsh = CreateObject("wscript.shell")
'Je declare ma variable url contenant le site que je veux
URL = "https://kador3.dalkia.net/see.php"
'Je declare une variable qui contient le chemin absolu de mon executable chrome
chromePath = """C:\Program Files\Google\Chrome\Application\Chrome.exe"""
'Je lance un script shell qui excute Chrome et lance la recherche du site
Shell (chromePath & " -url " & URL)
Application.Wait (Now + TimeValue("0:00:08"))
Application.StatusBar = "Fermeture chrome"
Wsh.getElementsByClassName("w2ui-btn w2ui-btn-green w2ui-input").Click
End Sub
Jai fait un .getElementsByClassName() et bizarrement jai un message d'erreur VBA :
Si c'est le site de ta boîte pourquoi utiliser selenium ? Tu pourrais juste modifier le site pour y ajouter une api...
Désolé je voulais dire la boite ou je bosse Je ne peux pas ajouter une API... Si je pouvais je l'aurais fais ou utiliser des outils comme Talend vu que mon objectif est de faire un mini DataLake pour croisé certaines données. Je dois donc trouver un moyen d'automatiser l'extraction sur les différents site pour pouvoir les déplacer vers un SGBD que j'ai préparer. La boite ou je bosse est très a cheval niveau sécu. Pour l'instant jai modifier mon algo et sa fonctionne pour l'un des sites sauf qu'il faut maintenant l'adapter pour les autres et j'en deviens fou.
Application.StatusBar = "Ouverture chrome"
Dim URL$, ChromePath$, Wsh
Set Wsh = CreateObject("wscript.shell")
'Je declare ma variable url contenant le site que je veux
Kador = "https://kador3.xxxx.net/see.php"
'Je declare une variable qui contient le chemin absolu de mon executable chrome
ChromePath = """C:\Program Files\Google\Chrome\Application\Chrome.exe"""
'Je lance un script shell qui excute Chrome et lance la recherche du site KADOR3
Shell (ChromePath & " -url " & Kador)
'J'attend 5 seconde
Application.Wait (Now + TimeValue("0:00:05"))
Application.StatusBar = "Fermeture chrome"
'Je me positionne sur le bouton export
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
Wsh.SendKeys ("{TAB}")
'Je clique sur le bouton export
Wsh.SendKeys ("{ENTER}")
'Jattend 5 seconde
Application.Wait (Now + TimeValue("0:00:05"))
'Je clique sur telecharger
Wsh.SendKeys ("{ENTER}")
- Edité par MrCerritulus 2 décembre 2021 à 11:43:52
les captures d'écrans précédentes ne sont pas visibles chez moi.
tu devrais utiliser le composant webbrowser (à mettre dans unserform) qui te permettrait d'accéder au DOM et donc de choisir directement le bouton avec getElementsbyclassname ou autre (l'inconvénient c'est que ça utilise internet explorer)
les captures d'écrans précédentes ne sont pas visibles chez moi.
tu devrais utiliser le composant webbrowser (à mettre dans unserform) qui te permettrait d'accéder au DOM et donc de choisir directement le bouton avec getElementsbyclassname ou autre (l'inconvénient c'est que ça utilise internet explorer)
Désolé umfred je viens de constater ce problème d'image. Merci pour tes conseils, je vais essayer de contacter la DSI pour quil puisse me donner les accès pour installer le complément Sélénium sur vba. Pour l'instant la méthode avec du Shell fonctionne sur l'un des site. J'avais vu la méthode avec Dim IE as New Internet Explorer mais la version d'internet explorer sur ma machine est tellement vieille que je ne peux même pas accès a l'un des sites ou je fais mes exports. Mais il est préférable que je règle ce problème de limitation d'accès avec la DSI.
autre chose, si c'est en intranet, et que les données sont stockés sur des serveurs "internes", tu peux peut-être directement les récupérer de ces serveurs par requête sql
autre chose, si c'est en intranet, et que les données sont stockés sur des serveurs "internes", tu peux peut-être directement les récupérer de ces serveurs par requête sql
Bonjour Umfred, S'était ma première solution mais il m'est impossible d'envoyer des requêtes SQL dans le serveurs. Nos données sont administrer par CGI et AWS. Il nous m'est donc impossible d'envoyer des requêtes dans leurs serveurs. Pour accéder a leurs serveurs je dois forcement passée par l'intranet de la boite.
Extraction base de donnée sous format excel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
PB68