Web Scraping mit Selenium (Python)

Wenn Sie mit Python ein System für maschinelles Lernen erstellen, können Sie Daten verwenden, die ohne Einschränkungen für Kontrollmechanismen wie Patente verwendet werden können, die als im Internet veröffentlichte offene Daten bezeichnet werden. Natürlich verwenden wir die erfassten Daten, um das Modell effizient zu aktualisieren, aber manchmal möchten wir es automatisieren. Dieses Mal werde ich Selenium für das sogenannte Web-Scraping verwenden.

Vorsichtsmaßnahmen

Mechanische Downloads sind häufig verboten. Lesen Sie daher bitte die Nutzungsbedingungen der Website, die Sie besuchen.

Typische Web-Scraping-Bibliothek

Soweit ich überprüft habe, gibt es einige Auswahlrahmen, aber ich habe sie diesmal nicht verwendet, daher werde ich versuchen, Selen zu verwenden. Meines Wissens ist Selen ein Tool, das Bildschirmoperationen im Web automatisiert, aber die Automatisierung von Bildschirmoperationen zum Scraping verwendet.

Umgebung

Zwischen Selenium und dem Browser ist ein Treiber namens WebDriver erforderlich (diesmal Chrome).

Selen-Installation

Python verwendet Anaconda, also installieren Sie es mit conda.

conda install selenium

WebDriver-Installation

WebDriver hat die Binärdatei von http://chromedriver.chromium.org/downloads heruntergeladen Sie können es entweder an einen Ort kopieren, an dem Path übergeben wird, oder es mit pip installieren. Dieses Mal mit pip (conda) installieren.

conda install chromedriver-binary

Beispielausführung

Nachdem die Umgebung vollständig ist, führen wir zunächst das Beispiel von der folgenden Chromedriver-Site aus. Der Inhalt ist, dass die Google-Website angezeigt wird, ChromeDriver durchsucht wird und 5 Sekunden lang in den Ruhezustand versetzt wird und endet. http://chromedriver.chromium.org/getting-started

test1.py


import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()
python test1.py

Nach der Ausführung startet der Browser und sucht nach dem Chrome-Treiber. Der Browser sagt "Von automatisierter Testsoftware gesteuert"! Und es ist einfach!

1.png

Beispiel für Datenerfassung öffnen

Da es einsam ist, nur das Beispiel zu starten, werde ich ein Beispiel erstellen, das CSV von der folgenden Site herunterlädt.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')

download_dir = 'C:\\project'
prefs = {}
prefs['download.prompt_for_download'] = False
prefs['download.directory_upgrade'] = True
prefs['download.default_directory'] = download_dir

options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(chrome_options=options)

driver.get('https://XXXXXXXXXXXXXXXXXXXXXX');
time.sleep(5) # Let the user actually see something!
url = driver.find_element_by_partial_link_text("Tägliche Daten(CSV)")


driver.command_executor._commands["send_command"] = (
    "POST",
    '/session/$sessionId/chromium/send_command'
)
params = {
    'cmd': 'Page.setDownloadBehavior',
    'params': {
        'behavior': 'allow',
        'downloadPath': download_dir
    }
}
driver.execute("send_command", params=params)

driver.get(url.get_attribute('href'));

time.sleep(5) # Let the user actually see something!
driver.quit()

Führen Sie den Browser ausgeblendet aus

Blenden Sie im folgenden Teil des Codes den Browser aus, indem Sie beim Starten des Browsers als Option --headless übergeben.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)

Angabe des Speicherziels der Download-Datei

Der folgende Teil des Codes gibt an, wo die Download-Datei gespeichert werden soll.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
download_dir = 'C:\\project'
prefs = {}
prefs['download.prompt_for_download'] = False
prefs['download.directory_upgrade'] = True
prefs['download.default_directory'] = download_dir
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)

Geben Sie im Fall von --hedless zusätzlich das Speicherziel der Download-Datei an

Im Fall von --hedless ist ein zusätzlicher Code erforderlich, um das Speicherziel der Download-Datei anzugeben.

driver.command_executor._commands["send_command"] = (
    "POST",
    '/session/$sessionId/chromium/send_command'
)
params = {
    'cmd': 'Page.setDownloadBehavior',
    'params': {
        'behavior': 'allow',
        'downloadPath': download_dir
    }
}
driver.execute("send_command", params=params)

Damit ist der Download abgeschlossen! Einfach.

Zusammenfassung

Es scheint, dass der Code zunimmt, wenn Sie komplizierte Dinge tun, aber wenn Sie Selen verwendet haben, denke ich, dass Sie Selen für das Web-Scraping wählen können. Der Nachteil ist, dass mehr Browsertreiber und mehr Dinge installiert werden müssen. Es erscheint praktisch, wenn das erstellte Selenium-Skript im Browser funktioniert, aber es scheint noch unvollständig zu sein.

Eine Seite, die hilfreich zu sein scheint, um komplizierte Dinge zu tun

Recommended Posts

Web Scraping mit Selenium (Python)
Ich habe versucht, Web-Scraping mit Python und Selen
Scraping mit Python
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
Schaben mit Selen [Python]
Üben des Web-Scrapings mit Python und Selen
Ein Forscher eines Pharmaunternehmens fasste das Web-Scraping mit Python zusammen
Scraping mit Python 3.5 async / await
Web Scraping mit Python + JupyterLab
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Scraping mit Python 3.5 Async-Syntax
Scraping mit Selen in Python
Starten Sie mit Python zu Selen
Web Scraping mit AWS Lambda
Schaben mit Selen + Python Teil 2
[Python + Selen] Tipps zum Scraping
Web Scraping Anfänger mit Python
[Scraping] Python-Scraping
Web Scraping
Scraping mit Selen in Python (Basic)
Scraping mit Python, Selen und Chromedriver
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Web Scraping für Anfänger in Python (1)
Web Scraping für Anfänger in Python (4) -1
[Python] Einführung in das Scraping | Programm zum Öffnen von Webseiten (Selenium-Webdriver)
[Python Scraping] Ich habe versucht, Google Search Top10 mit Beautifulsoup & Selenium
Bedienen Sie den Browser mit den Python-Bindungen des Selenium Web Driver
Python-Scraping-Memo
Schaben mit Selen
[Python / Selen] XPath
Python Scraping get_ranker_categories
Schaben mit Selen ~ 2 ~
Scraping mit Python
WEB-Scraping mit Python (für persönliche Notizen)
Scraping mit Python
Erste Schritte mit Python Web Scraping Practice
Web Scraping (Prototyp)
Starten Sie Python
Schaben mit Selen
[Persönlicher Hinweis] Scraping von Webseiten in Python3
Pferderennseite Web Scraping mit Python
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Scraping von Websites mit JavaScript in Python
Betreiben Sie Webseiten automatisch mit dem Selenium-Webdriver
Erste Schritte mit Python Web Scraping Practice
Python: Scraping Teil 1
[Python] Eine Tabelle mit Beautiful Soup kratzen
Einfaches Web-Scraping mit Python und Ruby
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Python: Scraping Teil 2
Selen + WebDriver (Chrome) + Python | Erstellen einer Umgebung zum Scraping
Führen Sie das WEB-Scraping regelmäßig mit AWS-Lambda + Python + Cron aus
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Scraping dynamisch geladener TV-Programmlisten [Python] [Selen]