0
votes

Tableau en ligne avec Python Selenium Performance

Selon la performance, il est plus que évident que la raclage Web avec Bautifulsoup est beaucoup plus rapide que d'utiliser un webdiver avec sélénium. Cependant, je ne connais aucun autre moyen d'obtenir du contenu d'une page Web dynamique. Je pensais que la différence vient du temps nécessaire au navigateur pour charger des éléments mais c'est définitivement plus que cela. Une fois que le navigateur charge la page (5 secondes), tout ce que je devais faire est d'extraire des balises d'une table. Il a fallu environ 3-4 minutes pour extraire 1016 enregistrements extrêmement lents à mon avis. Je suis arrivé à une conclusion que les méthodes WebDriver pour trouver des éléments tels que Find_elements_by_name sont lents. Est wind_elements_by . De webDriver beaucoup plus lentement que la méthode dans belle -soup? Et serait-il plus rapide si j'obtiens tout le HTML du navigateur WebDriver, puis d'analyser avec LXML et utilisez la belle-pression?


4 commentaires

Oui, vous pouvez obtenir tout HTML en utilisant pilote.page_source


Oui mais est-il confirmé que la belle trouvaille est plus rapide que celle du sélénium?


Oui c'est vrai. Beauxoup est beaucoup plus rapide que le sélénium


J'ai essayé d'analyser le pilote.Page_source avec BeauXoupe et c'était beaucoup plus rapide inférieur à 10 secondes par rapport aux 3-4 minutes précédentes.


4 Réponses :


1
votes

Web raclage avec python en utilisant soit avec devrait faire partie du < em> stratégie de test . Mettez-le directement si votre intention est de gratter le contenu statique beauxoup est inégalé. Mais au cas où le contenu du site Web est rendu de manière dynamique sélénium est la voie à suivre.

avoir dit que, beauxoupes n'attendra pas le contenu dynamique qui n'est pas facilement présent dans le DOM TREE Une fois le chargement de la page terminé. Lorsque, en utilisant Sélénium vous avez l 'attente et et et > Attendez explicite à votre disposition pour localiser les éléments dynamiques souhaités.

Enfin, Find_Elements_By_Name () Peut être delta cher en termes de performance comme selenium le traduit dans son équivalent Find_Element_by_csss_selector () . Vous pouvez trouver encore plus de détails dans ce Discussion

Outroro

stratégies de localisation officielles pour la WebDriver


0 commentaires

1
votes

Oui, il serait beaucoup plus rapide d'utiliser le sélénium uniquement pour obtenir le code HTML après avoir attendu que la page soit prête, puis utilisez BEAUTESUP ou LXML pour analyser le HTML.

Une autre option pourrait être d'utiliser marionnettiste soit uniquement pour obtenir le code HTML ou pour obtenir les informations qui Vous voulez directement. Cela devrait également être plus rapide que le sélénium. Il existe des liaisons de python non officielles pour cela: Pyppeteer


0 commentaires

0
votes

Vous pouvez également essayer d'évaluer en JavaScript. Par exemple, ceci: xxx

sera d'au moins 10 fois plus vite que celui-ci: xxx

Je ne serais pas surpris si c'était plus rapide que BS beaucoup de temps aussi.


0 commentaires

1
votes

regarder dans 2 options:

1) Parfois, ces pages dynamiques ont effectivement les données dans les balises