Sélénium: Comment analyser un code après avoir utilisé du sélénium pour cliquer sur une liste déroulante

Dani Garcia Martos

J'essaie de Webscrape à travers cette page Web https://www.sigmaaldrich.com/ . Jusqu'à présent, j'ai réalisé que le code utilise la méthode des requêtes pour utiliser la barre de recherche. Après cela, je veux chercher les différents prix des composés. Le code html qui inclut les prix n'est pas visible tant que vous n'avez pas cliqué sur la liste déroulante Prix. J'ai réalisé cela en utilisant du sélénium pour cliquer sur toutes les listes déroulantes avec la classe souhaitée. Mais après cela, je ne sais pas comment obtenir le code html de la page Web qui est généré après avoir cliqué sur les listes déroulantes et où le prix est placé.

Voici mon code pour l'instant:

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

#get the desired search terms by imput

 name=input("Reagent: ")
 CAS=input("CAS: ")

  #search using the name of the compound

  data_name= {'term':name, 'interface':'Product%20Name', 'N':'0+',
       'mode':'mode%20matchpartialmax', 'lang':'es','region':'ES',
        'focus':'product', 'N':'0%20220003048%20219853286%20219853112'}
   #search using the CAS of the compound

   data_CAS={'term':CAS, 'interface':'CAS%20No.', 'N':'0','mode':'partialmax',
        'lang':'es', 'region':'ES', 'focus':'product'}
#get the link of the name search
 r=requests.post("https://www.sigmaaldrich.com/catalog/search/",    params=data_name.items())

 #get the link of the CAS search
n=requests.post("https://www.sigmaaldrich.com/catalog/search/",    params=data_CAS.items())

#use selenium to click in the dropdown(only for the name search)

driver=webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe")
driver.get(r.url)
dropdown=driver.find_elements_by_class_name("expandArrow")
for arrow in dropdown:
    arrow.click()

Comme je l'ai dit, après cela, je dois trouver un moyen d'obtenir le code html après avoir ouvert les listes déroulantes afin de pouvoir rechercher la classe de prix. J'ai essayé différentes choses mais je ne semble pas trouver de solution de travail.

Merci de votre aide.

Moshe Slavin

Tout d'abord, vous devez utiliser WebDriverWait comme Austen l'avait souligné.

Pour votre question, essayez ceci:

from selenium import webdriver


driver=webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe")
driver.get(r.url)
dropdown=driver.find_elements_by_class_name("expandArrow")
for arrow in dropdown:
    arrow.click()
    html_source = driver.page_source
    print(html_source)

J'espère que cela vous aide!

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive