[PYTHON] [EC2] Que faire lorsque le sélénium est bloqué et que le traitement ne se poursuit pas

[EC2] Que faire lorsque le sélénium est bloqué et que le traitement ne se poursuit pas

--Lors de l'utilisation du sélénium avec EC2, il faut beaucoup de temps pour obtenir les données. «Tout s'est bien passé au début, mais à mesure que l'exécution se répète, le traitement devient plus lourd. ――Si vous attendez longtemps, vous obtiendrez enfin une erreur indiquant que vous ne pouvez pas atteindre Chrome.

Erreur


$nom de fichier python3.py

selenium.common.exceptions.WebDriverException: 
Message: chrome not reachable

Cause

Plusieurs processus et pilotes pour le navigateur Chrome ont été lancés. (Parce qu'il est sans tête, il ne peut pas être confirmé visuellement ...)

approche

-Arrêtez le navigateur et le pilote Chrome en cours d'exécution. -Ecrire ʻobject.quit () `à la fin du fichier.

Procédure de réparation

1. 1. Vérifiez si plusieurs pilotes Chrome sont lancés.

python


#Afficher tous les processus en cours, y compris "chrome"
$ ps aux | grep chrome


#Si vous voyez beaucoup de descriptions comme celle ci-dessous, plusieurs webdrivers sont en cours d'exécution.
Nom d'utilisateur pts/0    Sl   04:09   0:00 
chromedriver --port=49671

#Si vous voyez beaucoup d'instructions comme celle ci-dessous, plusieurs processus de navigateur sont en cours d'exécution.
Nom d'utilisateur pts/0    S    04:32   0:00
/opt/google/chrome/chrome --type=broker

ps aux

--ps commande: affiche la commande en cours d'exécution --aux est une option --a: Tous les processus utilisateur --u: afficher le nom d'utilisateur et l'heure de début --x: affiche les processus sans bornes de contrôle


`| texte grep`
### 2. Quitter le navigateur Chrome et le Webdriver

python


killall chrome
killall webdriver

Vérifiez à nouveau le fichier en cours d'exécution.

python


$ ps aux | grep chrome


#Il ne restait que les éléments suivants et les autres étaient terminés.
Nom d'utilisateur pts/0    S+   04:35   0:00 
grep --color=auto chrome

### 3. 3. Ajouter quit () au traitement Exécutez quit () à la fin du fichier .py pour fermer tous les navigateurs.

python


#En supposant la description suivante
browser = webdriver.Chrome(options=options)

browser.quit()

Si la variable de démarrage de webdriver est décrite dans une autre description telle que driver, faites-la correspondre. ʻExemple: driver.quit () `


Au dessus de, -L'exécution du fichier py devient beaucoup plus rapide. -Il n'y aura pas de processus en cours après le traitement.

Supplément

Dans un autre article, il y avait quelque chose comme l'arrêt de sandbox et l'ajout de --no-sandbox en option, mais dans mon cas, sandbox n'a pas été démarré et n'était pas nécessaire.

Si le bac à sable est affiché dans le processus en cours d'exécution, il peut être efficace d'essayer également ce qui suit.

killall chrome-sandbox
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-setuid-sandbox")

L'article original est ici

Soit dit en passant, sandbox est un environnement isolé qui n'affecte pas les programmes extérieurs. (Utilisé pour exécuter des programmes susceptibles de contenir des virus, etc.)

Recommended Posts

[EC2] Que faire lorsque le sélénium est bloqué et que le traitement ne se poursuit pas
Procédures à suivre lorsque le japonais n'est pas affiché dans matplotlib
[Débutant] Que faire lorsque "[Errno 2] Le fichier b'test.csv 'n'existe pas: b'test.csv" s'affiche lors de la lecture du csv des pandas
NameError: le nom global'dot_parser 'n'est pas défini et que faire quand il apparaît en python
Que faire si le nom d'utilisateur est modifié et que le chemin de la bibliothèque pyenv ne passe pas
Que faire si l'installation de pyenv ne se poursuit pas avec une erreur
Remarques sur ce qu'il faut faire lorsque l'effacement des ombres ne fonctionne pas avec scatter () / scatter3d () de matplotlib
Exemple de ce qu'il faut faire lorsque l'exemple de script ne fonctionne pas (OpenCV-Python)
Que faire lorsque le graphique n'apparaît pas sur le notebook Jupyter (IPython)
curl: (60) Que faire lorsque le certificat de l'émetteur n'est pas valide.
Que faire si sys / cdefs.h n'existe pas
Que faire si pyenv n'est pas activé (zsh)
[Python] Erreur de type: l'objet 'WebElement' n'est pas itérable Que faire lorsqu'une erreur se produit
Que faire si Python3 Venv ne fonctionne pas bien sur Raspberry Pi
Que faire quand n'est pas dans le fichier sudoers. Cet incident sera signalé.
Que faire lorsque seule la fenêtre est affichée et que rien ne s'affiche dans le pygame
Que faire si vous obtenez l'erreur "Erreur: opencv3: Ne prend pas en charge la construction des wrappers Python 2 et 3" lors de l'installation d'openCV 3
Que faire lorsque la police PyCharm est étrange ou déformée
Pourquoi l'importation de django-import-export est si lente et que faire
Que faire lorsqu'un artefact manquant se produit dans un fichier jar qui n'est pas défini dans pom.xml
Que faire quand Ubuntu plante
Que faire lorsque les paramètres de l'extension jupyterlab ne sont pas reflétés
Que faire lorsque l'inode est épuisé sur EC2 Linux
Que faire lorsque le type de valeur est ambigu en Python?
Que faire lorsque le résultat téléchargé via scrapy est en anglais
[Mac OS] Que faire lorsque Python n'est pas installé en tant que framework S'affiche lors de l'importation de matplot lib.
[Python] Que faire lorsqu'une erreur liée à l'authentification SSL est renvoyée
Que faire lorsque l'avertissement "L'environnement est cohérent ..." apparaît dans l'environnement Anaconda
Que faire lorsque vous vous fâchez que libxml / xmlversion.h n'existe pas lorsque vous mettez lxml avec pip
Que faire lorsqu'un message d'avertissement est affiché dans la liste des pip
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
Que faire si CERTIFICATE_VERIFY_FAILED se produit lorsque nltk.download () est effectué sur macOS pyhon
Que faire si «TypeError: must be string, not int…» apparaît lors de l'utilisation de strptime
Que faire lorsque "TypeError: type de données non compris" apparaît dans numpy.zeros de python
Que faire si l'abandon s'affiche lors de la saisie d'une vidéo de caméra dans OpenCV
Que faire si le support japonais n'est pas complètement installé sur Ubuntu 16.04
Que faire quand une PermissionError dans tempfile.mkstemp se produit
[Python] Que faire quand Aucun module nommé "pyproj.datadir" n'apparaît lors de la création d'Exe avec PyInstaller
Que faire si la barre de progression n'est pas affichée dans tqdm de python
Que faire si vous ne voyez pas IntelliSense de Python dans VS Code sous Windows
Que faire lorsque "Erreur de type: doit être _socket.socket, pas socket" apparaît dans GAE
Que faire lorsque Python ne passe pas de la version système dans pyenv
[Petite histoire] Que faire si "Erreur avec le processus enfant: création de resource'awsToolkitSamLocalResource '" ne fonctionne pas lorsque Lambda est exécuté localement par SAM à partir de VS Code
[Go 1.13] Que faire lorsque la disposition de répertoire inattendue: apparaît
[openpyxl] Que faire lorsque IllegalCharacterError apparaît dans pandas.DataFrame.to_excel
Que faire lorsque gdal_merge génère un fichier énorme
Que faire lorsque vous déclenchez ValueError, "type de hachage non pris en charge"
Que faire lorsque "impossible d'importer le nom xxx" [Python]
Qu'est-ce que pip et comment l'utilisez vous?
Je ne peux pas utiliser le shell pipenv ... que dois-je faire?
Que faire s'il n'y a pas de réponse en raison des paramètres de proxy dans le scraping Web Python
Que faire si l'image n'est pas affichée à l'aide de matplotlib etc. dans le conteneur Docker
[Python débutant] Variables et portée à l'intérieur de la fonction (lorsque le traitement à l'intérieur de la fonction est reflété à l'extérieur de la fonction et quand il n'est pas reflété)
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Que faire lorsque ʻarguments [0] .scrollIntoView (); `échoue dans python sélénium
Comment ne pas charger d'images lors de l'utilisation de PhantomJS avec Selenium
Que faire lorsqu'une erreur de suppression se produit lors de la mise à jour de conda