[PYTHON] Observation en virgule fixe de données spécifiques sur le Web en exécutant automatiquement le navigateur Web sur le serveur (Ubuntu16.04) (1) -Installation du navigateur Web-

Objectif

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

environnement

Système d'exploitation: Ubuntu16.04 (Sakura VPS) python : python3.5

Étape 1) Sélection du navigateur Web

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.

Étape 2) Installez PhantomJS 2.1.1

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

Étape 2) Installez Selenium

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

Étape 3) Programme de test Selenium et PhantomJS

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

Observation en virgule fixe de données spécifiques sur le Web en exécutant automatiquement le navigateur Web sur le serveur (Ubuntu16.04) (1) -Installation du navigateur Web-
Sauvegardez les données vocales acquises par le navigateur au format wav sur le serveur
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
Publier le répertoire actuel sur le serveur Web
Observation en virgule fixe de données spécifiques sur le Web en exécutant automatiquement un navigateur Web sur le serveur (Ubuntu16.04) (2) -Web scraping-
Observation en virgule fixe de données spécifiques sur le Web en exécutant automatiquement le navigateur Web sur le serveur (Ubuntu16.04) (1) -Installation du navigateur Web-
Sauvegardez les données vocales acquises par le navigateur au format wav sur le serveur
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
[Python3] Prenez une capture d'écran d'une page Web sur le serveur et recadrez-la davantage
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Envoie le résultat de l'analyse morphologique avec Mecab vers un navigateur WEB compatible avec le serveur Sakura / UTF-8
Ne collectez que des images faciales d'une personne spécifique grâce au grattage Web
Surveillez régulièrement la réponse HTTP du serveur Web
Utilisez la dernière version de PyCharm sur Ubuntu
Au moment de la mise à jour de python avec ubuntu
[Python3] Prenez une capture d'écran d'une page Web sur le serveur et recadrez-la davantage
J'ai créé l'interface du tableau de bord de l'hôpital qui affiche les données cliniques sur la page Web.
Data Langling PDF sur l'épidémie de grippe par le ministère de la Santé, du Travail et du Bien-être social