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!
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
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
Die oberste Seite von Yahoo wurde sicher erfasst, sodass das Beispiel in Ordnung aussieht!
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.
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()
Es gab eine rücksichtslose Aufnahme eines nicht aufgezeichneten Bildes ...
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.
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.
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!
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!
Recommended Posts