[PYTHON] Comment supprimer des pages dont l'accès est refusé dans Selenium + Headless Chrome

introduction

Lorsque je grattais avec Selenium + Headless Chrome, je suis tombé sur un site où je pouvais obtenir des informations en mode tête, mais dès que je l'ai fait sans tête, j'ai eu une erreur NoSuchElementException. Il n'y avait pas beaucoup d'articles en japonais sur les solutions de contournement, donc je les posterai.

Statut

-Le grattage est possible en mode tête. -Une NoSuchElementException s'est produite dès que l'option headless a été ajoutée.

déboguer

Cause enquête

Il semble que l'élément n'ait pas été obtenu, j'ai donc vérifié la source du site avec driver.page_source.

scraping.py


driver.page_source

Le code HTML renvoyé contient les mots «Accès refusé», et il semble que l'accès à partir de headless soit refusé.

<html><head>
webapp_1        | <title>Access Denied</title>
webapp_1        | </head><body>
webapp_1        | <h1>Access Denied</h1>
webapp_1        |  
webapp_1        | You don't have permission to access "http://www.xxxxxxx/" on this server.<p>

Contre-mesures

Après examen, le pilote chrome avait une option user_agent qui pouvait être prétendument accessible à partir d'un navigateur. En ajoutant cela à l'option de chromedrivere, vous pouvez obtenir l'élément en toute sécurité.

scraping.py


options = webdriver.ChromeOptions()
            options.binary_location = '/usr/bin/google-chrome'
            options.add_argument('--no-sandbox')
            options.add_argument('--headless')
            options.add_argument('--disable-gpu')
            options.add_argument('--lang=ja-JP')
            options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36') #ajouter à

           

c'est tout

Recommended Posts

Comment supprimer des pages dont l'accès est refusé dans Selenium + Headless Chrome
Comment définir l'emplacement du navigateur dans Headless Chrome
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
Comment explorer des pages qui défilent à l'infini
Comment accéder avec cache lors de la lecture_json avec pandas
Comment passer en mode smartphone avec Python + Selenium + Chrome
Grattage 2 Comment gratter
Comment déboguer le sélénium
Comment écrire des conseils de type pour les variables qui sont affectées plusieurs fois sur une ligne
Comment tester cette exception est déclenchée dans python unittest
Comment manipuler le DOM dans iframe avec Selenium
Essayez d'extraire les mots-clés populaires dans COTOHA
Comment gratter en quelques secondes avec le sélénium de Python
Comment développer en Python
Comment créer des couches AWS Lambda lors de l'exécution de sélénium × chrome sur AWS Lambda
Expressions régulières faciles et solides à apprendre en Python
Comment déterminer qu'une clé croisée a été entrée dans Python3
Téléchargez et gérez les packages qui ne sont pas dans conda sur anaconda.org
Comment installer automatiquement le pilote Chrome pour la version Chrome avec Python + Selenium + Chrome
Conseils d'utilisation de Selenium et Headless Chrome dans un environnement CUI