** 6 mai 2018: j'ai écrit un nouvel article qui correspond à la situation actuelle après que Headless Chrome soit devenu stable. Voir aussi ici. ** **
L'autre jour, Vitaly de PhantomJS a parlé de l'histoire de sa retraite en tant que responsable. PhantomJS m'a aidé à utiliser facilement un navigateur sans tête. Je veux que vous utilisiez Headless Chrome à l'avenir, alors je l'ai essayé.
Je peux trouver de nombreux exemples qui utilisent Node.js, mais je voulais utiliser Python pour diverses raisons, donc ici, j'utiliserai Headless Chrome via Selenium.
C'est un mode qui fonctionne sans afficher l'écran, qui sera disponible depuis Google Chrome 59. Utile pour les tests automatisés et le web scraping.
Depuis le 28 avril 2017, il semble être disponible sur les versions Mac et Linux des canaux Dev ou Canary. Je l'ai essayé sur la version Mac du canal Canary. Je l'ai également essayé sur la version Windows du canal Canary, mais l'écran était affiché même si je spécifiais --headless
. Je pense qu'il sera bientôt disponible [^ 1].
[^ 1]: Référence: https://bugs.chromium.org/p/chromium/issues/detail?id=712981
Pour le moment, il est facile à utiliser depuis chrome-remote-interface de Node.js, et il y a beaucoup d'informations, vous devriez donc l'essayer à partir d'ici. Faisons le.
En passant, il semble qu'il existe de nombreux exemples d'utilisation de Chrome sur un écran virtuel tel que Xvfb sans tête depuis longtemps. Lorsque vous recherchez sur Google, vérifions quel sens il est utilisé.
Ce n'est pas parce qu'il est sans tête que c'est très différent de l'utilisation de Chrome ordinaire. Utilisez Chrome depuis Selenium via le pilote Chrome. Transmettez ChromeOptions en tant qu'argument lors de la création d'un Chrome WebDriver et spécifiez le chemin d'accès et les arguments de Chrome à y exécuter.
L'environnement que j'ai essayé est le suivant.
Hypothèse: Python 3.6 est installé.
(venv) $ pip install selenium
Faites une recherche sur Google. J'ai modifié l'exemple de code de Python Crawling & Scraping et remplacé la partie qui utilisait PhantomJS par Headless Chrome.
selenium_google.py
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
options = Options()
#Chemin Chrome (sur le canal stable)--Cela devrait être inutile lorsque le headless devient disponible
options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
#Activez le mode sans tête (commentez la ligne suivante pour voir l'écran).
options.add_argument('--headless')
#Créez un objet Chrome WebDriver.
driver = webdriver.Chrome(chrome_options=options)
#Ouvrez l'écran supérieur de Google.
driver.get('https://www.google.co.jp/')
#Dans le titre'Google'Assurez-vous que cela est inclus.
assert 'Google' in driver.title
#Entrez le terme de recherche et envoyez.
input_element = driver.find_element_by_name('q')
input_element.send_keys('Python')
input_element.send_keys(Keys.RETURN)
time.sleep(2) #Dans le cas de Chrome, il passera avec Ajax, alors attendez 2 secondes pour le moment.
#Dans le titre'Python'Assurez-vous que cela est inclus.
assert 'Python' in driver.title
#Prendre une capture d'écran.
driver.save_screenshot('search_results.png')
#Afficher les résultats de la recherche.
for a in driver.find_elements_by_css_selector('h3 > a'):
print(a.text)
print(a.get_attribute('href'))
driver.quit() #Quittez le navigateur.
Lorsque j'ai exécuté ce qui suit, les résultats de la recherche ont été générés sans afficher l'écran du navigateur.
(venv) $ python selenium_google.py
Python -Wikipédia
https://ja.wikipedia.org/wiki/Python
Tutoriel Python - Python 3.6.1 document
http://docs.python.jp/3/tutorial/
Cours de base Python(1 Qu'est-ce que Python?) - Qiita
http://qiita.com/Usek/items/ff4d87745dfc5d9b85a4
10 contenus que même les débutants peuvent étudier Python presque gratuitement-journal de développement paiza
http://paiza.hatenablog.com/entry/2015/04/09/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%A7%E3%82%82%E3%81%BB%E3%81%BC%E7%84%A1%E6%96%99%E3%81%A7Python%E3%82%92%E5%8B%89%E5%BC%B7%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%8410
[À voir pour les débutants] Qu'est-ce que Python? Explication approfondie des caractéristiques linguistiques, de la part et du marché du travail|samouraï...
http://www.sejuku.net/blog/7720
Ne soyez pas mordu par Python:Liste des risques de sécurité à surveiller|la programmation...
http://postd.cc/a-bite-of-python/
Qu'est-ce que Python-Mot-clé Hatena-Journal Hatena
http://d.hatena.ne.jp/keyword/Python
Site d'apprentissage de l'introduction à l'application de Python
http://www.python-izm.com/
Apprendre avec Python Une introduction à la programmation à partir des bases(1)Programmation avec Python...
http://news.mynavi.jp/series/python/001/
Download Python | Python.org
https://www.python.org/downloads/
driver.quit ()
.save_screenshot ()
est devenue une image 1x1. Peut-être ai-je besoin d'options. ~~Au moins sur OS X, je pourrais facilement utiliser Headless Chrome. Ce serait encore plus facile s'il pouvait être utilisé sur le canal Stable. Si vous supprimez l'option --headless
, l'écran sera affiché, donc je suis heureux qu'il semble facile à déboguer.
Recommended Posts