Hoppla! Vor kurzem bin ich Jesse (ich bin von Human Wolf J ~ ♪) mit nur 15 umgekehrten Katzen! Die Fortsetzung des letzten Males ist abgeschlossen, also ist es für die Öffentlichkeit zugänglich! Wenn Sie möchten, lesen Sie aus dem vorherigen (https://qiita.com/Jessica_nao_/items/b9f38a4413e424e3e585)!
Es gibt nur eine URL, aber ich wollte alle Daten aus der Tabelle extrahieren, die 20 Seiten mit jeweils 100 Elementen gleichzeitig enthält. Ich habe den Selen-Webdriver dazu gebracht, mein Bestes zu geben! Oh, wie der Tag sagt, ich benutze Python3!
--Teil2: Diese Seite! Ich habe Chrome Webdriver verwendet, um auf ein Element auf der Seite zu klicken, um es zu verschieben! Die Daten wurden als csv ~ gespeichert.
Ich finde es ziemlich klug, eine Funktion zum Erstellen eines Dateinamens zu haben! Lol
sample.py
def mkFile():
Ich dachte, es wäre besser gewesen, den folgenden Prozess in diesen einzufügen und ihn in Funktionen zu unterteilen.
Ich denke auch, dass dies wahrscheinlich der Stolperstein ist. Das Laden der Seite dauert einige Zeit. Machen Sie also unbedingt eine Pause! Das ist ↓↓
sample.py
sleep(3):
Vergessen Sie nicht, den Schlaf von Zeit zu Zeit zu importieren, da Sie eine Pause haben!
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 bin einmal zu JIS gegangen,
#Gibt es Zeichen, die nicht angezeigt werden können? 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"],
]
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.")
#Scheint es, als müssten Sie 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'</td></tr></tbody></table></div><div class="jsgrid-pager-container"',
]
#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 removeTag(cnt):
beforeAfter = [
[r'</tr>', "\n"],
[r'</td>', ","],
[r'<.*?>', ""],
]
with open(mkFN(cnt,1),encoding=mojicode) as f:
contents = f.read()
for i in range(0,3):
contents = re.sub(beforeAfter[i][0],beforeAfter[i][1],contents)
#Fügen Sie am Ende der Datei Kommas und Zeilenumbrüche hinzu!
contents += ",\n"
option = "a"
if cnt == 0:
option = "w"
with open(mkFN("all",2),option,encoding=mojicode) as f:
f.write(contents)
cnt = 20
gettxt2(cnt)
print("gettxt: done!")
sleep(1)
for i in range(0,cnt):
trimming(i)
print("trimming: done!")
sleep(1)
for i in range(0,cnt):
removeTag(i)
print("removeTag: done!")
Weil ich ein paar Stunden lang Probleme hatte, konnte ich am Ende nicht aufhören zu schreien, als ich sah, dass in wenigen Minuten immer mehr Informationen hinzugefügt wurden! Lol Ich hoffe, ich gewöhne mich ein bisschen mehr daran und mache mich in etwa 30 Minuten fertig.
Recommended Posts