IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Accéder à une 2ème page web


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut Accéder à une 2ème page web
    Bonjour,

    j'ai un code qui copie le code source d'une page web.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import requests
     
    requete = requests.get("https://www.xxxx.com")
    page = requete.content
    f1=open("maPage.txt","w",encoding="utf-8-sig")
    f1.write(str(page))
    f1.close()

    j'ai une page web N°1 qui donne accés à une page web N°2 en tapant un mot dans un champs de texte et en cliquant sur un bouton OK.

    Je dispose du mot qu'il faut taper et je voudrais copier le code source de la page web N°2 avec python.

    Sauriez-vous comment faire, svp?

    Merci d'avance.
    Arsène.

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Pour ce genre de choses, j'utilise selenium.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Salut,

    Citation Envoyé par Arsene12 Voir le message
    Je dispose du mot qu'il faut taper et je voudrais copier le code source de la page web N°2 avec python.
    Pour récupérer une page Web, il faut connaître son URL (http://....) et si cette URL doit être extraite d'une autre page, il faut apprendre à y naviguer dedans avec des outils comme BeautifulSoup (ou plus simple, çà dépend de son contenu).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Salut,

    S'il suffit de faire une première requête pour obtenir la première page, analyser le contenu de celle-ci pour connaître l'url de la 2e, je recommande l'utilisation beautifulsoup comme Wiztricks.
    Si tu dois interagir avec la page (remplir un formulaire, cliquer sur des bouton), j'avais utilisé avec succès MechanicalSoup.

    - F

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Merci pour vos réponses. J'ai essayé d'utiliser Selenium (livre). Je l'ai fait à l'aide de ce lien. Malheureusement, j'ai obtenu cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from selenium import webdriver
    driver = webdriver.PhantomJS()
    driver.set_window_size(1120, 550)
    driver.get("https://www.google.fr/")
    driver.find_element_by_class_name("gsfi").send_keys("campus booster")
    driver.find_element_by_class_name("sbico").click()  # je comprends pas cette ligne
    driver.find_element_by_css_selector(".r:first-child").click()
    print(" Vous etes bien connectes à Campus Booster. Voici l URL de la page : ' + driver.current_url'")
    driver.save_screenshot("screenshot.png")
    driver.quit()
    Je vais devoir utiliser Firefox in headless mode

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Ce code permet de se connecter à une page web et de faire une copie écran. Il faut auparavant avoir installer Selenium et, pour pouvoir utiliser Chrome, avoir inséré l'exécutable chromedriver.exe dans le dossier selenium\webdriver\chrome.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from selenium import webdriver
    path=r"C:\Users\myUserName\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"
    driver=webdriver.Chrome(path)
    driver.get("http://www.google.com")
    html = driver.page_source
    print(html)
     
    driver.save_screenshot("screenshot.png")
     
    driver.close()
    driver.quit()
    J'ai voulu utiliser GeckoDriver qui permet d'utiliser différents navigateurs dont Firefox.
    J'ai déposé geckodriver.exe dans le dossier firefox mais ça marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    path=r"C:\Users\myUserName\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\selenium\webdriver\firefox\geckodriver.exe"
    driver=webdriver.Firefox(path)
    Puisque chrome fonctionne, je voudrais à partir de google aller sur la page de wikipédia.
    Si je rajoute la ligne de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    driver.find_element_by_class_name("gsfi").send_keys("wikipedia")
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"gsfi"}
    Je pense qu'il faut peut-être taper un autre nom que "gsfi". En inspectant l'élément dans Chrome, je suis pas arrivé à voir le nom de la class_name.

    J'ai aussi essayé sans succès ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    input = driver.find_element_by_name("Rechercher")
    input.send_keys("wikipedia")

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Voici la solution qui nécessite donc d'avoir installé selenium et rajouté l’exécutable chromedriver.exe dans le dossier selenium\webdriver\chrome :


    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
    import time
     
    from selenium import webdriver
    path=r"C:\Users\arsen\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"
    driver=webdriver.Chrome(path)
    driver.get("http://www.google.com")
     
    element = driver.find_element_by_name("q")
     
    element.send_keys("wikipedia")
    element.submit()
     
    driver.find_element_by_css_selector(".r:first-child").click()
     
    driver.save_screenshot("screenshot.png")
     
    time.sleep(5)
     
    driver.close()
    driver.quit()
    Ce code ouvre le navigateur Chrome, va sur la page d’accueil de Google, tape Wikipédia, effectue la recherche et clique sur le premier lien trouvé qui nous amène sur la page d'accueil de Wikipédia.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accéder à une autre page web
    Par Houdette dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/06/2012, 23h22
  2. Réponses: 3
    Dernier message: 11/05/2006, 17h47
  3. Protection d'une seule page web avec un .htaccess
    Par alex75 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/04/2006, 21h45
  4. 3 boutton submit dans une seule page web
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2006, 12h37
  5. récupérer le nom des champs d'une table d'une BDD-page web
    Par mathieu_r dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 09/06/2005, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo