Il y avait des données sur le WEB dont les valeurs changeaient en temps réel. J'ai décidé de créer un programme pour vérifier régulièrement la valeur, mais il était difficile d'écrire le code de scraping car je devais me connecter à la page. En guise de contre-mesure, j'ai décidé d'utiliser du sélénium pour faire fonctionner un navigateur Web et gratter. Je vais résumer le processus dans un mémorandum.
De plus, il était normal d'utiliser le PC à portée de main et d'exécuter automatiquement le navigateur Web par traitement par lots, mais c'était un obstacle pour lancer le navigateur Web sur mon propre PC que j'utilise habituellement. Exécutons-le sur le serveur de location (Ubuntu16.04) sans autorisation.
Plus précisément, ce sera l'image suivante. (1) Lancez un navigateur Web via python → Part1 (this post) (2) Utilisez le navigateur Web avec du sélénium et traitez les données WEB → Expliqué dans Part2 (3) Stocker les données traitées dans mongoDB → Expliqué dans Partie3 (4) Exécuter automatiquement le programme py qui exécute (1) à (3) avec cron → Expliqué dans Part3 (5) S'il y a une certaine fluctuation de la valeur, notifier par e-mail → Bonus
Système d'exploitation: Ubuntu16.04 (Sakura VPS) python : python3.5
Au départ, je travaillais sur Google Chrome, mais à certains égards, j'ai trouvé que le navigateur sans tête PhantomJS était bon, alors j'ai commencé à utiliser PhantomJS. Les raisons de choisir PhantomJS sont les suivantes.
J'ai installé PhantomJS en suivant les étapes ci-dessous.
$ wget -O /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
$ cd /tmp
$ bzip2 -dc /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xvf -
$ sudo mv /tmp/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
$ phantomjs --version
> 2.1.1
Si la vérification de version sur la dernière ligne indique la version prévue que vous avez installée, vous avez terminé.
(URL de référence) http://bit.ly/2bRGnYI
Utilisez Selenium pour l'observation en virgule fixe des données sur le Web. Selenium est l'un des outils de test pour les applications WEB. Au lieu que les humains contrôlent le navigateur, Selenium contrôle le navigateur.
Selenium peut être utilisé avec le code du programme, mais en bref, Selenium vous permet d'utiliser librement le navigateur par programme. Par exemple, vous pouvez effectuer des opérations telles que «cliquer sur le bouton nommé login» et «saisir automatiquement votre adresse e-mail dans la zone de texte nommée userid». Vous pouvez également obtenir le texte HTML de la page actuellement ouverte, qui peut être utilisé pour le scraping.
J'ai travaillé avec du sélénium en python3. Suivez les étapes ci-dessous pour installer le sélénium, y compris l'installation de pip3.
sudo apt-get install python3-setuptools
sudo easy_install3 pip
pip3 install selenium
Utilisez Selenium et PhantomJS pour lancer la page Google et obtenir la valeur de la balise de titre Google.
programme de test de sélénium
import time
from selenium import webdriver
browser = webdriver.PhantomJS(executable_path='<path/to/phantomjs>')
browser.get("http://www.google.com")
time.sleep(3)
print(browser.title)
browser.close()
Le code ci-dessus est intuitif et facile à comprendre, et même si vous êtes nouveau sur le sélénium, vous ne serez pas confus. Si "Google" est sorti, le programme fonctionne normalement.
La seule chose qui nécessite une attention est la 4ème ligne. Lorsque vous appelez PhantomJS avec webdriver.PhantomJS (), vous devez décrire le chemin de phantomJS dans l'argument. Spécifiez le chemin sous la forme webdriver.PhantomJS (executable_path = '...') comme indiqué dans le code ci-dessus. Si tu ne connais pas le chemin
which phantomjs
Puisque la valeur renvoyée est le chemin, spécifions l'emplacement.
La 5ème ligne envoie une requête GET à l'URL spécifiée par browser.get (...). La réponse obtenue est stockée dans le navigateur et la valeur de la balise de titre de Google peut être affichée dans browser.title.
Maintenant que nous avons confirmé que le sélénium et PhantomJS ont commencé, nous aimerions réellement gratter et extraire des données spécifiques.
Continuez sur Sequel (2).
Recommended Posts