Selenium + WebDriver (Chrome) + Python | Création d'un environnement pour le scraping

Contexte

Ce que je voulais faire et la première situation

Je veux gratter une page Web (html après expansion js).

L'enquête a commencé

Je pensais gratter avec curl ou php, Avec curl, j'étais perdu si je ne récupérais pas la source après js.

Après y avoir enquêté, les deux suivants sont candidats.

phantomjs

Il y avait beaucoup d'informations et j'ai senti que c'était efficace comme ça, mais j'ai trouvé que le développement s'est terminé en juin 2018 et le support s'est terminé.

Selenium + WebDriver

Quand j'ai cherché, il y avait beaucoup d'informations et de nouveaux articles, j'ai donc décidé de l'essayer avec Selenium pour le moment.

Préparation environnementale

Les choses nécessaires

python
pip
chromedriver
selenium

Étant donné que j'utilise un Mac et que Python est inclus en standard, j'omettrai l'installation de Python.

Installer pip

$ curl -kL https://bootstrap.pypa.io/get-pip.py | python

Résultat d'exécution

$ curl -kL https://bootstrap.pypa.io/get-pip.py | python
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1841k  100 1841k    0     0  4630k      0 --:--:-- --:--:-- --:--:-- 4649k
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
  Downloading pip-20.2.3-py2.py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 4.0 MB/s 
Collecting wheel
  Downloading wheel-0.35.1-py2.py3-none-any.whl (33 kB)
Installing collected packages: pip, wheel
  WARNING: The scripts pip, pip2 and pip2.7 are installed in '/Users/xxx/Library/Python/2.7/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script wheel is installed in '/Users/xxx/Library/Python/2.7/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-20.2.3 wheel-0.35.1

Il y a un message pour passer le chemin, alors passez le chemin

$ export PATH="$HOME/Library/Python/2.7/bin:$PATH"
$ echo 'export PATH="$HOME/Library/Python/2.7/bin:$PATH"' >> ~/.bash_profile

Vérifiez si le pass est passé

$ echo $PATH
/Users/xxx/Library/Python/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

$ cat ~/.bash_profile
export PATH="$HOME/Library/Python/2.7/bin:$PATH"

Maintenant que vous pouvez utiliser la commande pip, vérifiez

$ pip -V
pip 20.2.3 from /Users/xxx/Library/Python/2.7/lib/python/site-packages/pip (python 2.7)

Installer le pilote Chrome

Tout d'abord, vérifiez la version de Chrome que vous utilisez actuellement sur votre ordinateur. Version: 85.0.4181.101

Alors, utilisez la commande suivante

pip install chromedriver-binary==85.*

Résultat d'exécution

$ pip install chromedriver-binary==85.*
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Defaulting to user installation because normal site-packages is not writeable
Collecting chromedriver-binary==85.*
  Downloading chromedriver-binary-85.0.4183.87.0.tar.gz (3.6 kB)
Building wheels for collected packages: chromedriver-binary
  Building wheel for chromedriver-binary (setup.py) ... done
  Created wheel for chromedriver-binary: filename=chromedriver_binary-85.0.4183.87.0-py2-none-any.whl size=7722067 sha256=901454e21156aef8f8bf4b0e302098747ea378a435c801330ea46d03ed
  Stored in directory: /Users/xxx/Library/Caches/pip/wheels/12/27/b7/69d38bfd65642b45a64e7e97e3160aba20f20be91cd5a
Successfully built chromedriver-binary
Installing collected packages: chromedriver-binary
Successfully installed chromedriver-binary-85.0.4183.87.0
$ 

Installez Selenium

Commande utilisée

pip install selenium

Résultat d'exécution

$ pip install selenium
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Defaulting to user installation because normal site-packages is not writeable
Collecting selenium
  Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB)
     |████████████████████████████████| 904 kB 5.2 MB/s 
Collecting urllib3
  Downloading urllib3-1.25.10-py2.py3-none-any.whl (127 kB)
     |████████████████████████████████| 127 kB 10.7 MB/s 
Installing collected packages: urllib3, selenium
Successfully installed selenium-3.141.0 urllib3-1.25.10
$ 

Maintenant, vous êtes prêt à partir.

Essayez de courir avec Python

Créer un fichier Python

test.py


import chromedriver_binary 
from selenium import webdriver

options = webdriver.ChromeOptions()
# options.add_argument('--incognito')
# options.add_argument('--headless')

print('connect...try...connect...try...')
driver = webdriver.Chrome(options=options)

driver.get('https://qiita.com')
print(driver.current_url)

# driver.quit()

Courir

$ python test.py 

Cela fera apparaître le navigateur Chrome. Je suis heureux.

Pour lancer dans la fenêtre secrète, décommentez ci-dessous.

options.add_argument('--incognito')

Si vous utilisez un navigateur sans tête, veuillez décommenter ce qui suit.

options.add_argument('--headless')

Après cela, je pense que n'importe qui peut gratter en vérifiant Selenium et xpath.

Supplément

La version de python qui était incluse dans le Mac cette fois était 2.7, elle est donc un peu ancienne et le support prendra fin en janvier 2020. Je n'utilise généralement pas Python, donc je le laisse tel quel, mais dans le résultat de l'exécution de chaque commande, un message (DEPRECATION) pour 2.7 apparaît. Veuillez me pardonner m (_ _) m

Article de référence

installation de pip https://qiita.com/suzuki_y/items/3261ffa9b67410803443 https://qiita.com/tom-u/items/134e2b8d4e11feea8e12

Configuration du sélénium https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a

Résumé de la sélection des éléments dans Selenium https://qiita.com/VA_nakatsu/items/0095755dc48ad7e86e2f

Gratter Xpath https://qiita.com/rllllho/items/cb1187cec0fb17fc650a

Recommended Posts

Selenium + WebDriver (Chrome) + Python | Création d'un environnement pour le scraping
[Python + Selenium] Conseils pour le grattage
[Mac] Création d'un environnement virtuel pour Python
Créer un environnement de développement Python pour le développement de l'IA
Écraser le fichier de téléchargement pour python selenium Chrome
Créer un environnement pour exécuter des scripts Python (pour Mac)
Construire un environnement Anaconda pour Python avec pyenv
[Python / Chrome] Paramètres de base et opérations de scraping
Grattage avec du sélénium [Python]
Maintenance de l'environnement Python pour les projets
Construire un environnement Python avec pyenv, pyenv-virtualenv, Anaconda (Miniconda)
Écrire sur la création d'un environnement Python pour l'écriture de Qiita Qiita
Création d'un environnement de travail Docker R et Python
Créer un environnement pour le traitement du langage naturel avec Python
Procédure de création d'un environnement CDK sous Windows (Python)
Construction d'environnement Python pour les débutants en programmation (Mac OS)
Mémo de construction d'environnement d'apprentissage automatique par Python
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
[Python] Éliminer les erreurs de Chrome Webdriver
Grattage avec du sélénium en Python
Construction de l'environnement Python pour Mac
Selenium WebDriver + Firefox49 (provisoire) (Python)
Construction de l'environnement Python3 (pour les débutants)
Construire un environnement virtuel Python
Web scraping avec Selenium (Python)
Grattage avec Selenium + Python Partie 2
[Pour organiser] Environnement de développement Python
Construire un environnement virtuel Python
Défiez Python3 et Selenium Webdriver
Construire un environnement python pour l'intelligence artificielle (Chainer / TensorFlow / CSLAIER)
[Note] Liste des commandes de base pour la construction d'un environnement python / conda
[Python] Introduction au scraping | Programme d'ouverture de pages Web (sélénium webdriver)
Création d'un environnement de développement pour les applications Android - Création d'applications Android avec Python
Construire un environnement Hy pour Lisper qui n'a pas touché Python
[Python] Création d'un environnement Python virtuel pour le didacticiel sur la pyramide (résumé)
Construire un environnement Python sur Mac
Scraping avec Selenium en Python (Basic)
Construire un environnement Python sur Ubuntu
Grattage avec Python, Selenium et Chromedriver
Créer un environnement virtuel avec Python 3
Options d'environnement de développement Python pour mai 2020
Paramètres Emacs pour l'environnement de développement Python
Construction de l'environnement Python3 TensorFlow pour Mac
Web scraping pour les débutants en Python (1)
Web scraping pour les débutants en Python (4) -1
Création de l'environnement de travail Docker R et Python 2: prise en charge du japonais
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
De la création d'un environnement Python pour les personnes inexpérimentées à Hello world
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
Création d'un environnement virtuel pour Mayavi dédié aux utilisateurs de Python 3.6, Anaconda et Spyder
[Python] Création d'un environnement avec Anaconda [Mac]
[Definitive Edition] Création d'un environnement d'apprentissage "machine learning" à l'aide de Python sous Windows
Créer un environnement pour Python intégré à Blender
Grattage WEB avec Python (pour mémo personnel)