0
votes

Obtenir une liste vide lors de la gratte avec le sélénium

J'essaie de créer une fonction Python capable de gratter les titres d'article d'un résultat de recherche sur le site Web de la science populaire.

J'ai écrit ce code, qui a travaillé pour un site Web similaire lié à la science, mais quand je l'exécute Spécifiquement pour la science populaire, il renvoie une liste vide.

code: xxx


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser pilote.implicitly_wait (10) code> pour attendre tandis que la page est chargée.

from selenium import webdriver


def scrapper(text):
    driver = webdriver.Chrome('./chromedriver')
    driver.get(f"https://www.popsci.com/search-results/{text}/")
    driver.implicitly_wait(10)
    search = driver.find_elements_by_class_name("siq-partner-result")
    wired_dict = [word.text for word in search]

    print(wired_dict)


scrapper('sample')


1 commentaires

Merci beaucoup SOOOOOOOOOOOOOO Beaucoup!



0
votes

Cette page prend un certain temps à charger. Vous utilisez pilote.find_elements_by_class_name avant la fin de la page de chargement, il ne trouve donc pas ces éléments.

Vous pouvez tester cette théorie par heure d'importation et .sleep (5) juste avant le code de recherche.

La meilleure solution consiste à conserver la vérification jusqu'à ce que les éléments soient chargés avec webDriverwait () Attendez que les éléments aient chargé. xxx


0 commentaires

0
votes

Vous pouvez utiliser WebDriverWait pour l'élément souhaité à visible, puis essayer de trouver les éléments.

Utilisation de XPath: P>

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC


0 commentaires