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.
Part1: https://qiita.com/Jessica_nao_/items/b9f38a4413e424e3e585 Übe, die Quelle auf einer Seite zu bekommen und zu reinigen!
Part2: https://qiita.com/Jessica_nao_/items/76efc0b99ff18c0e6bd7 Ich habe Chrome Webdriver verwendet, um auf ein Element auf der Seite zu klicken, um es zu verschieben! Die Daten wurden als csv ~ gespeichert.
--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.
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
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()
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