[Teil 3] Crawlen mit Python! Es ist eher JSON als CSV! ??

zunaechst

Hoppla! Es ist gut zu kauen und es scheint, als ob 2 Wölfe überleben, also werde ich die schwarze Katzensäule CO!

Wenn Sie die Daten speichern, können Sie den Umgang mit Kommas nicht verstehen, und schließlich ist JSON stabiler als CSV! ?? (Ich weiß nicht ...) Sie brauchen überhaupt keine Tabellenkalkulationen oder Excel, oder? Was kann ich eines Tages sagen ...?

Also habe ich das letzte Mal fortgesetzt, also werde ich es veröffentlichen.

Crawlen x Scraping mit Python und Selen!

--Teil3: Diese Seite! Ich dachte, dass es besser wäre, JSON zu verwenden, selbst wenn die Daten ":" oder "," enthalten, also habe ich es als Liste der JSON-Listen gespeichert! Ich denke, es fühlt sich gut an, weil ich es ein wenig repariert habe.

Überblick

Ich werde die Funktionen in der Reihenfolge von oben erklären!

--mkFN: Eine Funktion, die einen Dateinamen erstellt! --gettxt2: Speichern Sie die Quelle im Text, während Sie auf der Webseite navigieren! Dies geschieht so, dass alle gewünschten Seiten der Reihe nach angezeigt werden! Dieses Mal gibt es ein Element namens "Weiter", und ich habe versucht, "Klicken Sie hier → Holen Sie sich das Element der angezeigten Seite" zu wiederholen! --trimming: Ich habe alle Dateien ausgeschnitten und in einer anderen txt-Datei gespeichert! --removeTagForJSON: Formatiere es in eine JSON-Datei! Zuerst entfernte ich das Tag und setzte Klammern, so dass die letzte Liste kein Komma hatte, und es war mühsam, Feineinstellungen vorzunehmen ~ Weinen --addBlackets: Am Ende habe ich eine [] Klammer hinzugefügt! Ich habe einige Male mit den oben genannten Feineinstellungen viel wiederholt! Lol

Ergebnisse

sample.py


import re
from selenium import webdriver
from time import sleep

#Ich dachte, es wäre besser, es mit Excel zu öffnen, also Shift_Ich war einmal bei JIS, aber gab es Zeichen, die nicht angezeigt werden konnten? Ich weiß es nicht, aber ich habe aufgegeben, weil ich einen Fehler bekommen habe.
mojicode = "utf8"

def mkFN(cnt,typeindex):
    types = [
        ["sample_", ".txt"],
        ["trimmed_", ".txt"],
        ["fin_", ".csv"],
        ["JSON_fin_",".json"],
    ]
    cntstr = str(cnt)
    if len(cntstr) == 1:
        cntstr = "0" + cntstr
    ans = "data/"
    ans += types[typeindex][0] + cntstr + types[typeindex][1]
    return ans

def gettxt2(cnt):
    url = "https://www.sample.com"
    path = "/Users/sample/Downloads/chromedriver"
    fn0 = "data/sample"
    fn1 = ".txt"
    
    driver = webdriver.Chrome(path)
    driver.get(url)
    sleep(3)
    output = driver.page_source
    filename = mkFN(0,0)
    with open(filename,"w",encoding=mojicode) as f:
        f.write(output)
    print(filename + ": done.")

    #Ich weiß nicht warum, aber es scheint, als müsste ich es erneut initialisieren?
    output = driver.page_source
    sleep(3)

    for i in range(1,cnt):
        element = driver.find_element_by_link_text("Next")
        element.click()
        sleep(3)
        output = driver.page_source

        filename = mkFN(i,0)
        with open(filename,"w",encoding=mojicode) as f:
            f.write(output)
        print(filename + ": done.")


def trimming(cnt):
    filename = mkFN(cnt,0)
    filename2 = mkFN(cnt,1)
    with open(filename) as f:
        contents = f.read()
    regexen = [
        r'<tbody><tr class="jsgrid-row">',
        r'</table></div><div class="sample"',
    ]
    #Die Pluralform des Index sind Indizes
    indices = [0,0]

    for i in range(0,2):
        matchObj = re.search(regexen[i],contents)
        indices[i] = matchObj.start()
    rslt = contents[indices[0]:indices[1]]

    with open(filename2,"w",encoding=mojicode) as f2:
        f2.write(rslt)

def removeTagForJSON(cnt):
    beforeAfter = [
        [r'<tr.*?><td.*?>','\t["'],
        [r'</td><td.*?>','","'],
        [r'</td></tr>','"],\n'],
        [r'<.*?>', ""],
    ]

    with open(mkFN(cnt,1),encoding=mojicode) as f:
        contents = f.read()

    for i in range(0,4):
        contents = re.sub(beforeAfter[i][0],beforeAfter[i][1],contents)

    option = "a"
    if cnt == 0:
        option = "w"
    with open(mkFN("all",1),option,encoding=mojicode) as f:
        f.write(contents)

def addBlackets():
    with open(mkFN("all",1),encoding=mojicode) as f:
        contents = f.read()
    contents = "[\n" + contents[0:-2] + '\n]' 
    option = "w"
    with open(mkFN("all2",3),option,encoding=mojicode) as f:
        f.write(contents)

cnt = 20
gettxt2(cnt)

sleep(2)

for i in range(0,cnt):
    trimming(i)
print("trimming: done!")

for i in range(0,cnt):
    removeTagForJSON(i)
sleep(1)
addBlackets()

Am Ende

Dieses Mal sind es ungefähr 20 Seiten, also habe ich Dateien einzeln erstellt, aber es scheint schwierig zu sein, wenn ich nicht schreibe, nachdem ich 8000 Seiten oder so Übergänge richtig geformt habe! Lol Aber solange ich nicht auf 100100 Seiten gehe, ist es in Ordnung, es so zu lassen, wie es ist?

Recommended Posts

[Teil 3] Crawlen mit Python! Es ist eher JSON als CSV! ??
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Lesen Sie JSON mit Python und geben Sie CSV aus
Konvertieren Sie JSON mit Python von Splunk in CSV
[Python] Verwenden Sie JSON mit Python
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
Bildverarbeitung mit Python (Teil 2)
Python mit freeCodeCamp Teil1 studieren
Lesen Sie CSV mit Python-Pandas
Angrenzende Bilder mit Python Teil 1
Schaben mit Selen + Python Teil 1
POST json mit Python 3-Skript
Python studieren mit freeCodeCamp part2
Bildverarbeitung mit Python (Teil 1)
Nampre mit Python lösen (Teil 2)
Bildverarbeitung mit Python (3)
Schreiben Sie mit Python in csv
Schaben mit Selen + Python Teil 2
Formatieren Sie json mit Vim (mit Python)
Laden Sie die CSV-Datei mit Python herunter
Lesen von JSON-Daten mit Python
[Teil 2] Crawlen mit Python! Klicken Sie auf die Webseite, um sich zu bewegen!
Verschieben von CSV-Dateien mit Python Teil 1
Spielen Sie handschriftliche Zahlen mit Python Part 1
Machen Sie Apache Log CSV mit Python
[Python] Mit Python in eine CSV-Datei schreiben
[Mit Python automatisiert! ] Teil 1: Datei einstellen
Ausgabe in eine CSV-Datei mit Python
JSON-Codierung und -Decodierung mit Python
Behandeln Sie Excel-CSV-Dateien mit Python
Lesen und Schreiben von CSV mit Python
Automatisieren Sie einfache Aufgaben mit Python Part0
[Mit Python automatisiert! ] Teil 2: Dateivorgang
Dateneingabe / -ausgabe in Python (CSV, JSON)
Spielen Sie handschriftliche Zahlen mit Python Teil 2 (identifizieren)
FM-Modulation und Demodulation mit Python Part 3
Verarbeiten Sie Pubmed .xml-Daten mit Python [Teil 2]
CSV-Datei mit Python lesen (CSV-Datei herunterladen und analysieren)
Automatisieren Sie einfache Aufgaben mit Python Part1 Scraping
Konvertieren Sie Excel-Daten mit Python in JSON
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
Bearbeiten von Azure CosmosDB aus Python Part.2
Lesen und Schreiben von JSON-Dateien mit Python
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
Optimieren Sie mit Optimierung und nicht mit inverser Konvertierung
FM-Modulation und Demodulation mit Python Part 2
Kurs zur Erstellung von Webanwendungen, der mit Flask of Python Teil 2 Kapitel 1 ~ JSON-Austausch ~ gelernt wurde
Python #JSON
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Erstellen Sie solche Testdaten mit Python (Teil 1)
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Lesen und Schreiben von CSV- und JSON-Dateien mit Python
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
Verschieben von CSV-Dateien in Python Teil 2: Leistungsmessung