Hoppla! Das ist Jesse. Ich habe gerade von der Villa überlebt und bin nur ein Anfänger. Ich werde es zusammenstellen, damit ich mich darauf beziehen kann, nur für den Fall, dass es ungefähr die gleiche Anzahl von Leuten gibt! Oh, und ich schreibe, weil ich Glück habe, wenn sich eine starke Person öffnet und mir einen Rat gibt! Lol
Oh, ich benutze Python3!
--Teil1: Diese Seite! Ü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.
Part3: https://qiita.com/Jessica_nao_/items/140b435a9e13054ed78e 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.
Schreiben Sie wiederum, was Sie getan haben.
Ich habe mich gefragt, ob ich es mit Anfragen machen würde, aber ist dies auf diejenigen beschränkt, deren API für die Öffentlichkeit zugänglich ist? Ich wusste es nicht, also importierte und verwendete ich den Web-Treiber von Selen.
Wenn Sie kein Selen installiert haben Mac: Versuchen Sie, "python3 -m pip install selenium" in Ihrem Terminal auszuführen! (Ich weiß nicht warum, aber ich bin damit fertig!) Windows: Es wäre schön das zu sehen! → https://www.seleniumqref.com/introduction/python/Python_Sele_Ins.html
sample.py
import re
from selenium import webdriver
from time import sleep
def gettxt():
#Geben Sie die URL der Webseite an, aus der Sie die Quelle extrahieren möchten, den Pfad des Chromedrivers und den Dateinamen, um den Inhalt zu speichern!
url = "https://www.sample.com"
path = "/Users/sample/Downloads/chromedriver"
filename = "data/sample.txt"
driver = webdriver.Chrome(path)
driver.get(url)
sleep(5)
output = driver.page_source
with open(filename,"w",encoding="utf8") as f:
f.write(output)
sleep(3)
driver.quit()
sample.py
def trimming():
#Geben Sie den Namen der zu lesenden und der zu schreibenden Datei an!
filename = "data/sample.txt"
filename2 = "data/sample2.txt"
with open(filename) as f:
cntnt = f.read()
#Lesen Sie die Quelle des Ortes, den Sie trimmen möchten, und geben Sie die Start- und Endzeichenfolgen ein!
regexen = [
r'<tbody><tr class="Die Anfangsklasse der gewünschten Informationen">',
r'</td></tr></tbody></table></div><div class="Nächste Klasse mit den gewünschten Informationen"',
]
#Die Pluralform des Index sind Indizes
indices = [0,0]
for i in range(0,2):
matchObj = re.search(regexen[i],cntnt)
indices[i] = matchObj.start()
rslt = cntnt[indices[0]:indices[1]]
with open(filename2,"w",encoding="utf8") as f2:
f2.write(rslt)
TypeError: expected string or bytes-like object Ich habe diesen Fehler bekommen, Es war ein Schmerz, nur das vorletzte zu vergessen ()! Lol () Wird für Funktionen benötigt, die keine Argumente annehmen, daher bin ich nicht daran gewöhnt.
sample.py
matchObj.start()
Konvertieren Sie zunächst, wo die Zeile bricht. Als nächstes setzen Sie ein Komma. Schließlich habe ich alle Tags gelöscht!
Ich dachte, es wäre schön, in eine Schleife aus Zahlen und eine Liste zu schreiben, aber Wörterbuch oder Karte waren besser, damit Sie die Korrespondenz sehen können! Lol
Ich habe den kommentierten Teil unten noch einmal geschrieben!
sample.py
def removeTag():
filename2 = "data/sample2.txt"
filename3 = "data/sample3.csv"
#Jedes Zeichen ist eine beliebige Zeichenfolge mit 0 oder mehr Wiederholungen!
regex0 = r'<.*>'
#Aber oben ganz am Anfang<Vom letzten>Bring nicht alles auf den Punkt.
#Hinter dem Sternchen?Wenn Sie hinzufügen, wird es von vorne aufgenommen.
regex = r'<.*?>'
regexen = [
r'</tr>',
r'</td>',
r'<.*?>',
]
after = [
"\n",
",",
"",
]
with open(filename2) as f:
contents = f.read()
for i in range(0,3):
contents = re.sub(regexen[i],after[i],contents)
contents += ","
with open(filename3,"w") as f:
f.write(contents)
Ich wusste es überhaupt nicht, aber als ich nach regulären Ausdrücken suchte, fand ich das erste Match von vorne nicht! Vielmehr holen sie normalerweise die längste. "Normal" ist schwierig ...
sample.py
#Jedes Zeichen ist eine beliebige Zeichenfolge mit 0 oder mehr Wiederholungen!
regex0 = r'<.*>'
#Aber oben ganz am Anfang<Vom letzten>Bring nicht alles auf den Punkt.
#Hinter dem Sternchen?Wenn Sie hinzufügen, wird es von vorne aufgenommen.
regex = r'<.*?>'
Ich werde es aktualisieren, wenn ich in Zukunft etwas tun kann!
Recommended Posts