J'efface le contenu d'un site Web à l'aide de Python. J'ai d'abord utilisé BeautifulSoup
et Mechanize
sur Python mais j'ai vu que le site Web avait un bouton qui créait du contenu via JavaScript, j'ai donc décidé d'utiliser Selenium
.
Étant donné que je peux trouver des éléments et obtenir leur contenu en utilisant Selenium avec des méthodes comme driver.find_element_by_xpath
, quelle raison y a-t-il à utiliser BeautifulSoup
alors que je pourrais simplement utiliser Selenium pour tout?
Et dans ce cas particulier, je dois utiliser le sélénium pour cliquer sur le bouton JavaScript, est-il préférable d'utiliser également le sélénium pour analyser ou dois-je utiliser à la fois le sélénium et la belle soupe?
Avant de répondre directement à votre question, il vaut la peine de dire comme point de départ: si tout ce que vous avez à faire est d'extraire du contenu de pages HTML statiques, vous devriez probablement utiliser une bibliothèque HTTP (comme Requests ou la fonction intégrée). urllib.request
) avec lxml
ou BeautifulSoup
, pas le sélénium (bien que le sélénium soit probablement suffisant aussi). Les avantages de ne pas utiliser inutilement le sélénium:
requests
.Notez qu'un site nécessitant des cookies pour fonctionner n'est pas une raison de faire éclater Selenium - vous pouvez facilement créer une fonction d'ouverture d'URL qui définit et envoie comme par magie des cookies avec des requêtes HTTP en utilisant cookielib / cookiejar .
D'accord, alors pourquoi pourriez-vous envisager d'utiliser du sélénium? À peu près entièrement pour gérer le cas où le contenu que vous souhaitez analyser est ajouté à la page via JavaScript, plutôt que intégré dans le HTML. Même dans ce cas, vous pourrez peut-être obtenir les données que vous souhaitez sans casser la machinerie lourde. Habituellement, l'un de ces scénarios s'applique:
Si vous décidez que votre situation mérite d'utiliser Selenium, utilisez-le en mode sans tête, qui est pris en charge par (au moins) Firefox et Chrome. L'araignée Web ne nécessite généralement pas le rendu graphique de la page, ni l'utilisation de particularités ou de fonctionnalités spécifiques au navigateur, donc un navigateur sans tête - avec ses coûts de processeur et de mémoire inférieurs et moins de pièces mobiles à planter ou à bloquer. - est idéal.
Je recommanderais d'utiliser Selenium pour des choses telles que l'interaction avec des pages Web, que ce soit dans un navigateur complet ou un navigateur en mode sans tête, tel que Chrome sans tête. Je voudrais également dire que la belle soupe est meilleure pour observer et écrire des déclarations qui dépendent de la détection d'un élément ou de ce qui est trouvé, puis en utilisant Selenium pour exécuter des tâches interactives avec la page si l'utilisateur le souhaite.