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