Schaben mit Selen + Python Teil 1

Letzte Überprüfung

Ich habe versucht, die Seiteninformationen abzurufen, nachdem ich mich das letzte Mal mit Goutte angemeldet hatte, wurde jedoch durch die Bildauthentifizierung besiegt. https://qiita.com/shioharu_/private/818154ac145c78076487

Also werde ich dieses Mal die Methode ändern und mit Selenium + Python kratzen!

Einführung

Verwenden von Vagrant und VirtualBox unter Windows 10 Führen Sie den Selenium-, Python- und Chrome-Treiber in CentOS 7.0 in einer virtuellen Umgebung ein.

Eingeführt unter Bezugnahme auf die Weisheit unserer Vorgänger. https://worklog.be/archives/3422

Versuchen Sie es mit

sample.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
 
driver = webdriver.Chrome(options=options)
driver.get('https://www.yahoo.co.jp/')
 
driver.save_screenshot('test.png')
driver.quit()

Ausführen

python sample.py


test_.png

Die oberste Seite von Yahoo wurde sicher erfasst, sodass das Beispiel in Ordnung aussieht!

Letztes Problem

Beim letzten Mal hatte ich eine Bildauthentifizierung und konnte den Bildschirm nach dem Anmelden nicht anzeigen. Selen hat einen Standby-Prozess. Wenn Sie sich also während dieser Zeit manuell anmelden, sollten Sie in der Lage sein, zur Bildauthentifizierungsseite zu wechseln! Ich dachte, aber ich fand heraus, dass durch Angabe des Profilpfads von Chrome der Status des angegebenen Profils beibehalten wird. https://rabbitfoot.xyz/selenium-chrome-profile/

Schließlich müssen Sie nur den Profilpfad angeben, wenn Sie im Voraus manuell angemeldet sind. Vielen Dank für Ihre Prägnanz.

Da ich CentOS verwende, eine virtuelle Umgebung, dachte ich, wenn ich einen symbolischen Link der Windows-Umgebung auf das Mount-Ziel setze, wird von dort aus darauf verwiesen.

Beispiel

mklink /J "C:\Users\[Nutzername]\Desktop\work\vagrant\User Data" "C:\Users\[Nutzername]\AppData\Local\Google\Chrome\User Data"


Lassen Sie uns die Beispielquelle neu schreiben und ausführen

sample2.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
options.add_argument('--user-data-dir=Profilpfad mit symbolischer Verknüpfung')
 
driver = webdriver.Chrome(options=options)
driver.get('https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html')
 
driver.save_screenshot('test2.png')
driver.quit()

jedoch

Es gab eine rücksichtslose Aufnahme eines nicht aufgezeichneten Bildes ...

hilogin.png

Die Ursache war, dass die Profilpfadreferenz nicht ordnungsgemäß funktionierte. Es gibt einen Unterschied zwischen dem in der virtuellen Umgebung installierten Chromprofil und dem Chromprofil auf der Fensterseite ... Es macht also keinen Sinn, in einer virtuellen Umgebung zwangsweise zu binden. Deshalb möchte ich Python und Selenium auf der Windows-Seite installieren und ausführen.

Einstellungen auf der Windows-Seite

Referenz: https://mylife8.net/install-selenium-and-run-on-windows/

Python https://www.python.org/downloads/ Keine besonderen Hinweise, da es nur dem Installer folgt

Selenium Nach der Installation von Python können Sie es installieren, indem Sie an der Eingabeaufforderung Folgendes ausführen.

ChromeDriver https://sites.google.com/a/chromium.org/chromedriver/downloads Laden Sie denselben Chrome-Treiber wie Ihre Chrome-Version herunter. Der Speicherort von chromedriver.exe kann überall sein, aber ich habe ihn zum besseren Verständnis an derselben Stelle wie Python abgelegt.

\Users\[Nutzername]\AppData\Local\Programs\Python\Python38\chromedriver.exe


Die Umgebungsvariable PATH wurde ebenfalls oben festgelegt.

Laufen Sie von der Windows-Seite

Melden Sie sich vorab bei Chrome unter https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html an. Lassen Sie uns Chrome geschlossen halten. Schreibe die Quelle unten um und führe sie aus!

sample3.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
options.add_argument('--user-data-dir=C:\\Users\\[Nutzername]\\AppData\\Local\\Google\\Chrome\\User Data')
 
driver = webdriver.Chrome(options=options)
driver.get('https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html')
 
driver.save_screenshot('test3.png')
driver.quit()

Ich habe es sicher! screencapture-p-eagate-573-jp-game-2dx-27-ranking-weekly-html-2020-05-10-13_26_24.png

Der Teil, den Sie tatsächlich wollen, ist der Ranglisten-Teil. Experimentieren Sie also, um zu sehen, ob Sie den Ranglisten-Teil erreichen können. Versuchen Sie, auf die Seitenposition zu klicken und sie anzupassen, um das gewünschte Teil anzuzeigen.

sample4.py


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

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
options.add_argument('--user-data-dir=C:\\Users\\[Nutzername]\\AppData\\Local\\Google\\Chrome\\User Data')

driver = webdriver.Chrome(options=options)
driver.get('https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html')
driver.find_element_by_xpath("/html/body/div/div[1]/div/div/div[2]/div/div[2]/form/div[2]/ul[1]/li[3]/input").click()
time.sleep(3)

driver.execute_script("window.scrollTo(0, 800)")
time.sleep(3)

driver.save_screenshot('sample.png')
driver.quit()

Es sieht okay aus! _sample.png

Allgemeiner Kommentar

Recommended Posts

Schaben mit Selen + Python Teil 1
Schaben mit Selen + Python Teil 2
Schaben mit Selen [Python]
Schaben mit Selen in Python
Scraping mit Selen in Python
Schaben mit Selen
Schaben mit Selen ~ 2 ~
Scraping mit Python
Schaben mit Selen
Python: Scraping Teil 1
Python: Scraping Teil 2
Scraping mit Selen in Python (Basic)
Scraping mit Python, Selen und Chromedriver
Erfolgreiches Schaben mit Selen
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Automatisieren Sie einfache Aufgaben mit Python Part1 Scraping
Scraping mit Python + PhantomJS
Screenshot mit Selen (Python Edition)
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Üben des Web-Scrapings mit Python und Selen
Scraping mit Python + PyQuery
Scraping von RSS mit Python
Bildverarbeitung mit Python (Teil 2)
Ich habe versucht, mit Python zu kratzen
Python mit freeCodeCamp Teil1 studieren
Angrenzende Bilder mit Python Teil 1
Schaben mit Chromedriver in Python
Festliches Scraping mit Python, Scrapy
Python: Arbeiten mit Firefox mit Selen
Python studieren mit freeCodeCamp part2
Bildverarbeitung mit Python (Teil 1)
Scraping mit Tor in Python
Nampre mit Python lösen (Teil 2)
Web Scraping mit Selenium (Python)
Bildverarbeitung mit Python (3)
Kratzwettervorhersage mit Python
[Python + Selen] Tipps zum Scraping
Ich habe versucht, mit Python zu kratzen
Web Scraping Anfänger mit Python
I-Town-Seite mit Selen abkratzen
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
[Scraping] Python-Scraping
Versuchen Sie es mit Python + Beautiful Soup
Spielen Sie handschriftliche Zahlen mit Python Part 1
Scraping mit Node, Ruby und Python
[Mit Python automatisiert! ] Teil 1: Datei einstellen
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Kratzen mit Python und schöner Suppe
Lassen Sie uns mit Python Image Scraping durchführen
Holen Sie sich Qiita-Trends mit Python-Scraping
Automatisieren Sie einfache Aufgaben mit Python Part0
[Mit Python automatisiert! ] Teil 2: Dateivorgang
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Holen Sie sich Wetterinformationen mit Python & Scraping
Abrufen von Eigenschaftsinformationen durch Scraping mit Python