Je veux gratter une page Web (html après expansion js).
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.
python
pip
chromedriver
selenium
Étant donné que j'utilise un Mac et que Python est inclus en standard, j'omettrai l'installation de Python.
$ 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)
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
$
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.
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.
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
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