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 :

Comment faire une boucle sur un href dynamique avec Selenium-Python?


Sujet :

Python

  1. #1
    Membre régulier Avatar de Clairant
    Homme Profil pro
    Doctorant en économie (UdeM), Ingénieur Statisticien Economiste
    Inscrit en
    Mars 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant en économie (UdeM), Ingénieur Statisticien Economiste

    Informations forums :
    Inscription : Mars 2015
    Messages : 79
    Points : 71
    Points
    71
    Par défaut Comment faire une boucle sur un href dynamique avec Selenium-Python?
    J'aimerais faire une boucle sur un href dynamique. En effet, je télécharge un ensemble de fichiers par pages. Sur chaque page, je télécharge 100 fichiers text mais je dois télécharger 200 000 fichiers. Ainsi, je dois cliquer sur le bouton suivant 2 000. Pour ce faire, j'ai récupéré l'adresse href du bouton suivant mais malheureusement, deux objects changent dans ce lien, le numéro de page 1,2,3, etc et une chaîne de caractère. Veuillez regarder ci-dessous un exemple de href du bouton suivant qui change.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    href="https://search.proquest.com/something/E6981FD6D11F45E8PQ/2?accountid=12543#scrollTo"
     
    href="https://search.proquest.com/something/E6981FD6D11F45E8PQ/3?accountid=12543#scrollTo"
     
    href="https://search.proquest.com/something/61C27022597C4092PQ/4?accountid=12543#scrollTo"
     
    href="https://search.proquest.com/something/E431552DC6554BF7PQ/5?accountid=12543#scrollTo"
    #Avant j'avais ajouté le librairies de Selenium dont j'ai besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    n=2000
    for i in range(1,n):
      href="https://search.proquest.com/something/715376F5A5AF44BBPQ/" + str(i) + "?accountid=12543#scrollTo" 
      driver.get(href)
     
      #ici, j'ai ajouté le code pour télécharger les fichiers sur chaque page
    Merci pour votre aide,
    **************************************************************************************************************************************************************
    L'avenir est dans le numérique.

    **********************************************************

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour, et la demande d'aide est ??????

  3. #3
    Membre régulier Avatar de Clairant
    Homme Profil pro
    Doctorant en économie (UdeM), Ingénieur Statisticien Economiste
    Inscrit en
    Mars 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant en économie (UdeM), Ingénieur Statisticien Economiste

    Informations forums :
    Inscription : Mars 2015
    Messages : 79
    Points : 71
    Points
    71
    Par défaut
    Bonjour cher Maître Pylo,

    Merci pour ta disponibilité. En effet, je t'explique ce que j'essaie de faire.

    1- Je veux télécharge N fichiers (par exemple 2000 fichiers).
    2-Par page, je ne peux que télécharger 100 fichiers.
    3-Alors, si je dois télécharger les 2000 fichiers, je dois cliquer 20 fois sur le bouton "page suivante" de la première page.
    Nom : next.PNG
Affichages : 547
Taille : 16,2 Ko
    Cependant, mon approche consiste à récupérer le href du bouton 'page suivante' et ensuite faire une boucle for sur l'indice du numéro de page.
    Voici par exemple à cause ressemble le href :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://search.proquest.com/results.bottompagelinks:gotopage/2?site=canadiannewsmajor&t:ac=B1D3E55B20BD4F25PQ/1#scrollTo
    Cependant, le numéro de la page change et ce numéro aussi change ac=B1D3E55B20BD4F25PQ chaque fois que je relance le téléchargement dans 100 nouveaux fichiers.

    Stp, pourras tu m'aider si comment je peux faire la boucle afin de télécharger les 100 fichiers par page et arriver à télécharger les 2 000 (Imagines 2 000 000 fichiers à téléchrger)?.

    Merci,
    Bien cordialement,
    **************************************************************************************************************************************************************
    L'avenir est dans le numérique.

    **********************************************************

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ce que vous voulez faire c'est du scrapy, je vous conseilles d'aller regarder la lib qui va bien et les tutos : https://scrapy.org/

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Clairant Voir le message
    Stp, pourras tu m'aider si comment je peux faire la boucle afin de télécharger les 100 fichiers par page et arriver à télécharger les 2 000 (Imagines 2 000 000 fichiers à téléchrger)?.
    Pour récupérer des pages sur un site Web, il faut étudier l'information qui est dans la page pour voir ce qu'on peut en faire. Et pour çà avoir des connaissance HTML, CSS, javascript,... qui n'ont rien à voir avec Python.
    En outre, pour accéder à ce site là, il faut déjà s'inscrire...

    L'un dans l'autre, dans la pratique, pas grand monde ne peut vous aider.

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

  6. #6
    Membre régulier Avatar de Clairant
    Homme Profil pro
    Doctorant en économie (UdeM), Ingénieur Statisticien Economiste
    Inscrit en
    Mars 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant en économie (UdeM), Ingénieur Statisticien Economiste

    Informations forums :
    Inscription : Mars 2015
    Messages : 79
    Points : 71
    Points
    71
    Par défaut Comment identifier le xpath du bouton d'une page suivante avec Selenium ?
    Bonjour chers experts,

    Svp, je viens encore donner plus de détails sur ce que j'ai envie de faire. En effet, j'aimerais savoir comment identifier le xpath du button me permettant d'accéder à la page suivante. J'ai essayé de faire avec le title mais cela ne marche pas. Voici ci-dessous mon code en utilisant selenium, vous pouvez vérifier si je devrais choisir un autre élément pertinent pour le xpath de la page suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    hile True:
     
    scraping()         
     
    try:
        #Checks if there are more pages with links
        next_link = driver.find_element_by_xpath("//*[@title='Page suivante']")
        drive.execute_script("arguments[0].scrollIntoView();", next_link)
        next_link.click()
         #Time sleep
        time.sleep(20)  
    except NoSuchElementException:
        pages_rows= False
    voici l'image du bouton de la page suivante après inspect:

    Nom : next_button_xpath.PNG
Affichages : 511
Taille : 195,1 Ko

    Merci,

    Bien cordialement,
    **************************************************************************************************************************************************************
    L'avenir est dans le numérique.

    **********************************************************

Discussions similaires

  1. Segments liés comment faire une boucle sur les items non grisés
    Par Chanchan07 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/02/2018, 10h10
  2. Comment faire une boucle sur handles.text(i)
    Par beloboy dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 09/01/2014, 22h53
  3. Comment faire une boucle sur l’événement "Click" de PictureBox
    Par dmoluc dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/04/2013, 13h21
  4. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45

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