Installez Chrome en ligne de commande sur Sakura VPS (Ubuntu) et lancez Chrome avec python à partir de l'affichage virtuel et du sélénium

Objectif

Écrire du code de scraping Web qui nécessite POST, comme une page de connexion, est fastidieux. J'ai utilisé du sélénium pour éliminer cette gêne. Il exécute automatiquement le navigateur via le sélénium, automatise les opérations qui nécessitent un POST et effectue un scraping Web.

environnement

Système d'exploitation: Ubuntu 16.04 (Sakura VPS)

Étape 1) Installez Chrome à partir de la ligne de commande

mkdir download
cd download
wget  https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
rm google-chrome-stable_amd64.deb

(URL de référence) http://bit.ly/2bBK3Ku

Étape 2) Préparation au démarrage de Google Chrome Vous pouvez le démarrer en tapant google-chrome sur la ligne de commande, mais lorsque vous le démarrez dans cet état, deux problèmes se sont produits. Les deux sont

  1. La dépendance est rompue.
  2. Il n'y a pas d'écran (bien sûr). est. Les détails de l'action sont indiqués ci-dessous.

Dans CLI, vous pouvez le démarrer en tapant google-chrome, mais si vous le démarrez dans cet état, deux problèmes se sont produits. Les deux sont

  1. La dépendance est rompue.
  2. Il n'y a pas d'écran (bien sûr). est. Les détails de l'action sont indiqués ci-dessous.

Problème 1) Réparation des dépendances

Cela correspondait à la commande suivante.

sudo apt-get update
sudo apt-get -f install

Problème 2) Il n'y a pas d'écran

((Proposition 1)) Bureau GUI </ b>

Vous pouvez installer le bureau GUI avec la commande suivante, mais je l'ai arrêté car cela semble prendre beaucoup de temps.

Installation de bureau GUI


sudo apt-get -y install ubuntu-desktop

((Proposition 2)) Installer l'affichage virtuel </ b>

Installez un écran virtuel et exécutez Chrome sur l'écran virtuel.

En tant que procédure,

① Installez xvfb de l'affichage virtuel ② Installez sélénium et pyvirtualdisplay pour faire fonctionner Chrome à partir de python ③ Ecrire un programme de démarrage Chrome avec python

est.

La procédure de travail spécifique est décrite à l'étape 3.

Étape 3) Lancez Google Chrome

Étape ①) Installez xvfb </ b>

J'ai installé l'affichage virtuel xvfb avec la commande suivante.

installation de xvfb


sudo apt-get install xvfb
sudo apt-get install unzip
wget -N http://chromedriver.storage.googleapis.com/2.20/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
sudo mv -f chromedriver/usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

Procédure ②) Installation de sélénium etc. </ B>

Pour faire fonctionner Chrome via python, installez le package selenium pour faire fonctionner Chrome et pyvirtualdisplay pour utiliser l'affichage virtuel xvfb.

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. pyvirtualdisplay est un package permettant d'utiliser l'affichage virtuel xvfb avec python.

J'ai installé les deux avec le code suivant. (Puisque pip3 n'a pas été installé, pip3 est installé à l'avance.)

sudo apt-get install python3-setuptools
sudo easy_install3 pip
pip3 install pyvirtualdisplay selenium

Étape ③) Installez xvfb </ b>

J'ai exécuté le code suivant.

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Chrome()
browser.get('http://www.google.co.jp')
print(browser.title)

browser.quit()
display.stop()

Je ne pense pas qu'il y ait beaucoup de confusion avec le code ci-dessus. Les lignes 1 et 2 appellent l'affichage virtuel et le sélénium.

La 4ème ligne définit l'affichage virtuel et la 5ème ligne le démarre. Lancez Chrome sur l'écran virtuel avec Webdriver.Chrome () sur la ligne 6. Récupérez les données source de google.co.jp sur la 7ème ligne Renvoie l'élément de balise de titre de la page acquise à la 8e ligne.

Vous disposez désormais d'un environnement dans lequel vous ne pouvez démarrer Chrome qu'avec la CLI.

Comment gratter réellement?

Quand je gratte, j'utilise PhantomJS au lieu de Chrome. Puisque PhantomJS est un navigateur sans tête, il ne nécessite pas d'affichage virtuel, et il est utile car il gratte également le code écrit en Javascript. Si vous souhaitez travailler avec PhantomJS, veuillez vérifier ici.

Cependant, dans le cas de Chrome, vous voudrez peut-être utiliser Chrome, car vous pouvez tester tout en voyant comment le navigateur se comporte réellement. Si vous voulez gratter avec Chrome, accédez à la page ici.

browser = webdriver.PhantomJS(executable_path='')

Partie de

browser= webdriver.Chrome() 

Si vous le remplacez par, cela fonctionnera ^^ (Répétez, veuillez noter que le code Javascript ne peut pas être gratté.)

Recommended Posts