Salut.
J'essaye de récupérer des données depuis un site de façon automatique en utilisant le module selenium. Le site en question est euronext.com où l'on peut trouver le cours actuel de différents unités de compte, mais aussi (et c'est ce qui m'intéresse) des données historiques. Jusqu'à présent je télécharge manuellement les données qui m'intéressent. Mais c'est assez fastidieux. Euronext ne propose pas d'API pour cela au contraire de Yahoo Finance ou Google Finance, mais certains produits qui m'intéressent ne sont pas tous sur ces sites.
Voilà pour la petite histoire.
Prenons un cas concret: Produit
Sur cette page, il y a une frame nommé "Price Chart" où comme son nom l'indique on peut voir un graph. Dans cette fenêtre il y a deux onglets "View Chart" et "View Data". Je souhaite "cliquer" sur cet onglet. Cette fois-ci on a un aperçu d'un tableau. Ici je souhaite "cliquer" sur "Historical", puis changer la plage de date, puis rafraîchir et enfin télécharger en cliquant sur "Download"...
En tout un petite dizaine d'étapes.
Jusqu'ici je n'ai pas réussi grand chose:
Je parviens à charger la page dans Chrome. En inspectant le code html (je ne pige que dalle en html), j'ai récupéré le XPATH des différents boutons sur lequel j'ai besoin de cliquer. Mais mon premier essai n'est pas concluant. Je trouve bien le premier élément par son XPATH, je peux voir sont attribut, mais l'appel à la méthode click() ne change rien et n'affiche rien dans la console non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #! python2 # -*- coding:Utf-8 -*- from selenium import webdriver from selenium.webdriver.common.keys import Keys WIEW_DATA = '//*[@id="pcContainer_da"]' HISTORICAL = '//*[@id="tablesNavigation_hi"]' DATE_PICKER_1 = '//*[@id="historicalDatePicker1"]' DATE_PICKER_2 = '//*[@id="historicalDatePicker2"]' REFRESH = '//*[@id="refreshHistoricalPC"]' DOWNLOAD = '//*[@id="downloadPCTable"]' GO_BUTTON = '/html/body/div[8]/div[3]/button[2]' webpage = r'https://www.euronext.com/en/products/etfs/FR0010411439-XPAR' driver = webdriver.Chrome() driver.get(webpage) # Find "Wiew Data button" button = driver.find_element_by_xpath(WIEW_DATA) print button.get_attribute("class") button.click() print button.get_attribute("class") #driver.close()
Peut-être que cet élément n'est pas un bouton, mais bon là ça dépasse mes compétences. Je suis allé faire un tour ici sans succès: http://selenium-python.readthedocs.org/navigating.html et dans les cours Python.
Ju
Partager