Ich wollte eine Liste von Büchern sehen, die ich zuvor gekauft hatte, aber es funktionierte auch nach vorherigem Ausprobieren überhaupt nicht.
"Python Crawling & Scraping [Augmented and Revised Edition] - Praktischer Entwicklungsleitfaden für die Datenerfassung und -analyse"
Ich las, studierte und versuchte es erneut [^ 1].
[^ 1]: Ich habe es wirklich gelesen, aber der Referenzlink war tatsächlich nützlicher. Dieses Buch ist nutzlos, weil es auch Gesetze und Vorschriften berührt.
from selenium import webdriver
import time
import dmm_user_pass
#Einfacher Weg, um das Auslaufen von Benutzername und Passwort zu verhindern
# (Dmm im selben Verzeichnis_user_pass.Veröffentlichen Sie niemals py)
USER = dmm_user_pass.USER
PASS = dmm_user_pass.PASS
#Holen Sie sich einen Phantom JS-Treiber
browser = webdriver.PhantomJS()
browser.implicitly_wait(5)
#Rufen Sie die Anmeldeseite auf(Wenn Sie sich anmelden, sollten Sie sofort zur gekauften Seite weitergeleitet werden)
url_login = "https://accounts.dmm.com/service/login/password"
browser.get(url_login)
print("Ich habe die Anmeldeseite besucht")
#Geben Sie Zeichen in das Textfeld ein
e = browser.find_element_by_id("login_id")
e.clear()
e.send_keys(USER)
e = browser.find_element_by_id("password")
e.clear()
e.send_keys(PASS)
#Formular abschicken
browser.find_element_by_xpath("//form[@name='loginForm']//input[@type='submit']").click()
print("Ich gab die Informationen ein und drückte den Login-Button")
time.sleep(10)
#Anzeigen gekaufter Seiten für DMM-E-Books
#Wenn Seite1 zu einer Seite wird, die nicht in einer Schleife vorhanden ist, wird die URL automatisch hinzugefügt.
# https://book.dmm.com/library/?age_limit=all&expired=Werden Sie 1(Die Seite, zu der Sie wechseln möchten, und die aktuelle URL stimmen nicht überein)
url_purchased = 'https://book.dmm.com/library/?age_limit=all&expired=1&sort=old&page='
for i in range(1, 100):
page_i = url_purchased + str(i)
browser.get(page_i)
time.sleep(5)
if page_i != browser.current_url:
break #Verarbeitung zum Beenden gemäß obigem Kommentar
#Liste der gekauften Titel
links = browser.find_elements_by_css_selector(
".m-boxListBookProductBlock__main__info__ttl > a")
for a in links:
title = a.text
print("-", title)
/usr/local/lib/python3.7/site-packages/selenium/webdriver/phantomjs/webdriver.py:49: UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
Ich habe die Anmeldeseite besucht
Ich gab die Informationen ein und drückte den Login-Button
-Mob Psycho 100
-Sag mir! Galko-Chan
(Unten weggelassen)
Die Warnung wird später beschrieben.
Ich konnte eine Liste der mit DMM-E-Books gekauften Bücher in der Reihenfolge des ältesten Kaufdatums abrufen.
Ich denke, es ist möglich, einen Link zu bekommen oder den Geldbetrag mit etwas mehr Einfallsreichtum einzubringen, aber ich werde es diesmal nicht tun, weil es Zeit braucht und problematisch ist. [^ 2]
[^ 2]: DMM-E-Books mit mehreren Bänden werden zusammengefasst, sodass diejenigen mit mehreren Bänden mit der Seite der Serie verknüpft sind, diejenigen ohne mehrere Bände jedoch direkt auf der Seite mit den Arbeitsdetails. Da es verknüpft ist, ist es notwendig, dort eine bedingte Verzweigung zu erstellen, wenn Sie einen Link erwerben oder einen Geldbetrag einbringen.
Ursprünglich habe ich darüber nachgedacht, mit dem Anforderungsmodul zu crawlen, aber ich habe aufgehört, weil ich mich nicht anmelden konnte, und ich bin froh, dass ich zu Selenium gewechselt bin und es funktioniert hat.
Da Selen nur den eigentlichen Vorgang im Code verursacht, sollten Sie sich unabhängig davon, was intern ausgeführt wird, anmelden können, wenn Sie den Benutzernamen, das Kennwort und die Position der Anmeldeschaltfläche kennen (angegeben durch die Klasse oder ID des HTML-Tags). Ich bin der Meinung, dass Selen für alle Crawls von Websites, für die eine Anmeldung erforderlich ist, in Ordnung ist.
[Python3] Scraping auf einer Site mit Anmeldefunktion [Anfragen] [Schöne Suppe]
Ich bezog mich auch auf das folgende [Python3] Scraping über einen Browser (dynamische Seiten usw.) [Selenium]
Morgen der DMM-Login-Teil
Ich habe versucht, Headless Chrome von Selenium zu verwenden
Die Warnung "UserWarning: Selenium-Unterstützung für PhantomJS ist veraltet. Verwenden Sie stattdessen kopflose Versionen von Chrome oder Firefox" wurde ausgegeben, aber es scheint, dass PhantomJS entwickelt wurde. Diesmal hat es funktioniert, aber ich werde Chrome in Zukunft verwenden.
Ich habe es als Referenz verwendet, als ich PhantomJS in Chrome geändert habe. Insbesondere der Teil Vorbereitung.
Der tatsächliche Code ist nahezu unverändert
# #Holen Sie sich einen Phantom JS-Treiber
# browser = webdriver.PhantomJS()
# browser.implicitly_wait(5)
# ↓
#Holen Sie sich einen Chrome-Treiber
options = webdriver.ChromeOptions()
options.add_argument('--headless') #Option zum Ausblenden des Bildschirms
browser = webdriver.Chrome(options=options)
browser.implicitly_wait(5)
Recommended Posts