** 6. Mai 2018: Ich habe einen neuen Artikel geschrieben, der der aktuellen Situation entspricht, nachdem Headless Chrome stabil geworden ist. Siehe auch hier. ** **.
Neulich sprach Vitaly von PhantomJS über die Geschichte des Ruhestands als Betreuer. PhantomJS hat mir geholfen, einen kopflosen Browser auf einfache Weise zu verwenden. Ich möchte, dass Sie in Zukunft Headless Chrome verwenden, also habe ich es versucht.
Ich kann viele Beispiele finden, die Node.js verwenden, aber ich wollte Python aus verschiedenen Gründen verwenden, daher werde ich hier Headless Chrome über Selenium verwenden.
Es ist ein Modus, der ohne Anzeige des Bildschirms funktioniert, der in Google Chrome 59 verfügbar sein wird. Nützlich für automatisierte Tests und Web Scraping.
Ab dem 28. April 2017 scheint es auf den Mac- und Linux-Versionen der Dev- oder Canary-Kanäle verfügbar zu sein. Ich habe es auf der Mac-Version des Kanarischen Kanals versucht. Ich habe es auch in der Windows-Version des Kanarischen Kanals versucht, aber der Bildschirm wurde angezeigt, auch wenn ich "--headless" angegeben habe. Ich denke, es wird bald verfügbar sein [^ 1].
[^ 1]: Referenz: https://bugs.chromium.org/p/chromium/issues/detail?id=712981
Derzeit ist die Verwendung über chrome-remote-interface von Node.js einfach, und es gibt viele Informationen. Sie sollten es daher von hier aus versuchen. Machen wir das.
Übrigens scheint es viele Beispiele für die Verwendung von Chrome auf einem virtuellen Display wie Xvfb zu geben. Wenn Sie googeln, überprüfen wir, welche Bedeutung es verwendet.
Headless bedeutet nicht viel anders als die Verwendung von normalem Chrome. Bedienen Sie Chrome von Selenium über den Chrome-Treiber. Übergeben Sie ChromeOptions als Argument beim Erstellen eines Chrome WebDriver und geben Sie den Pfad und die Argumente von Chrome an, die darin ausgeführt werden sollen.
Die Umgebung, die ich ausprobiert habe, ist wie folgt.
Annahme: Python 3.6 ist installiert.
(venv) $ pip install selenium
Führen Sie eine Google-Suche durch. Ich habe den Beispielcode von Python Crawling & Scraping geändert und den Teil, der PhantomJS verwendete, durch Headless Chrome ersetzt.
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()
#Chrome-Pfad (auf dem stabilen Kanal)--Es sollte unnötig sein, wenn kopflos verfügbar wird.
options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
#Aktivieren Sie den Headless-Modus (kommentieren Sie die nächste Zeile aus, um den Bildschirm anzuzeigen).
options.add_argument('--headless')
#Erstellen Sie ein Chrome WebDriver-Objekt.
driver = webdriver.Chrome(chrome_options=options)
#Öffnen Sie den oberen Google-Bildschirm.
driver.get('https://www.google.co.jp/')
#Im Titel'Google'Stellen Sie sicher, dass dies enthalten ist.
assert 'Google' in driver.title
#Geben Sie den Suchbegriff ein und senden Sie.
input_element = driver.find_element_by_name('q')
input_element.send_keys('Python')
input_element.send_keys(Keys.RETURN)
time.sleep(2) #Im Fall von Chrome wird der Übergang mit Ajax erfolgen. Warten Sie daher vorerst 2 Sekunden.
#Im Titel'Python'Stellen Sie sicher, dass dies enthalten ist.
assert 'Python' in driver.title
#Mache ein Bildschirmfoto.
driver.save_screenshot('search_results.png')
#Suchergebnisse anzeigen.
for a in driver.find_elements_by_css_selector('h3 > a'):
print(a.text)
print(a.get_attribute('href'))
driver.quit() #Beenden Sie den Browser.
Als ich Folgendes ausführte, wurden die Suchergebnisse ausgegeben, ohne den Browserbildschirm anzuzeigen.
(venv) $ python selenium_google.py
Python -Wikipedia
https://ja.wikipedia.org/wiki/Python
Python-Tutorial - Python 3.6.1 Dokument
http://docs.python.jp/3/tutorial/
Python-Grundkurs(1 Was ist Python?) - Qiita
http://qiita.com/Usek/items/ff4d87745dfc5d9b85a4
10 Inhalte, mit denen auch Anfänger Python fast kostenlos lernen können-Paiza Entwicklungstagebuch
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
[Muss für Anfänger gesehen werden] Was ist Python? Gründliche Erklärung der Sprachmerkmale, des Anteils und des Arbeitsmarktes|Samurai...
http://www.sejuku.net/blog/7720
Lass dich nicht von Python beißen:Liste der Sicherheitsrisiken, auf die Sie achten müssen|Programmierung...
http://postd.cc/a-bite-of-python/
Was ist Python?-Hatena-Schlüsselwort-Hatena Tagebuch
http://d.hatena.ne.jp/keyword/Python
Lernseite von der Einführung bis zur Anwendung von Python
http://www.python-izm.com/
Lernen mit Python Eine Einführung in die Programmierung anhand der Grundlagen(1)Programmieren mit Python...
http://news.mynavi.jp/series/python/001/
Download Python | Python.org
https://www.python.org/downloads/
save_screenshot ()
aufgenommene Screenshot zu einem 1x1-Bild. Vielleicht brauche ich ein paar Optionen. ~~Zumindest unter OS X könnte ich Headless Chrome problemlos verwenden. Es wäre noch einfacher, wenn es auf dem stabilen Kanal verwendet werden könnte. Wenn Sie die Option "--headless" entfernen, wird der Bildschirm angezeigt. Ich bin daher froh, dass das Debuggen einfach zu sein scheint.
Recommended Posts