É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.
Système d'exploitation: Ubuntu 16.04 (Sakura VPS)
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
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
Cela correspondait à la commande suivante.
sudo apt-get update
sudo apt-get -f install
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
Installez un écran virtuel et exécutez Chrome sur l'écran virtuel.
est.
La procédure de travail spécifique est décrite à l'étape 3.
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
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
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.
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