Holen Sie sich eine Liste der mit Python + Selen gekauften DMM-E-Books

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.


Tatsächlicher Code und Ausführungsergebnis

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.


Referenzlink

Recommended Posts

Holen Sie sich eine Liste der mit Python + Selen gekauften DMM-E-Books
[Python] Ruft eine Liste der Instanzvariablen ab
[Python] Nur eine Liste der Ordner abrufen
Ruft eine Liste der Dateien in einem Ordner mit Python ohne Pfad ab
Holen Sie sich eine Liste der IAM-Benutzer mit Boto3
Rufen Sie mit Python eine Liste der in der aktuellen Umgebung installierten Pakete ab
Python: Ruft eine Liste der Methoden für ein Objekt ab
Holen Sie sich eine Liste der Artikel, die von Benutzern mit Python 3 Qiita API v2 veröffentlicht wurden
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Discords Python 1.5 oder höher, ich kann keine Liste der Mitglieder erhalten
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Holen Sie sich eine Liste der CloudWatch-Metriken und eine Entsprechungstabelle der Einheiteneinheiten mit Python boto
Versuchen Sie, die Thread-Liste der Nachrichten (Abneigung) mit Python zu erhalten.
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Holen Sie sich HTML von Element mit Python-Selen
Zeigen Sie eine Liste der Alphabete in Python 3 an
Ermitteln Sie mit Selenium + PhantomJS + Python die Breite des Div auf der Serverseite
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich ein Ticket für einen Themenpark mit Python
Automatischer Betrieb von Chrome mit Python + Selen + Pandas
[Python] Erstellen Sie eine Liste mit verschiedenen Zeichentypen
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Löse A ~ D des Yuki-Codierers 247 mit Python
[Python] Werden Sie die Datierung mit regulären Ausdrücken los
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Holen Sie sich Qiitas "Gefällt mir" -Liste durch Schaben
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Einfache Aufgabenliste, erstellt mit Python + Django
Zubu Amateur will Python starten
Holen Sie sich mit Poetry eine schnelle Python-Entwicklungsumgebung
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Liste der Python-Module
Screenshot mit Selen (Python Edition)
Holen Sie sich ein Date mit Python
Schaben mit Selen [Python]
Liste mit Python initialisieren
Memo mit Python mit HiveServer2 von EMR verbunden
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda
Holen Sie sich Finanzdaten mit Python (dann ein wenig basteln)
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
Python + Selen zu GW viele Mail-Anzeigen
Gruppieren Sie nach aufeinanderfolgenden Elementen einer Liste in Python
Holen Sie sich mit Python den Betriebsstatus von JR West
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Ich habe meine Umgebung mit virtualenv isoliert, aber ich bekomme viele Pakete mit Pip-Liste
Nachdem Sie mit Python auf die Qiita-API geklickt haben, um eine Liste mit Artikeln für Anfänger zu erhalten, werden wir die Artikel von God besuchen
Holen Sie sich den Ländercode mit Python
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1