Ich wollte Textdaten aus einer lokalen HTML-Datei kratzen, also habe ich verschiedene Dinge ausprobiert, aber da die Python-Bibliothek Beautiful Soup sehr praktisch war, werde ich erläutern, wie man sie verwendet und in eine CSV-Datei ausgibt.
pyenv: 1.2.15 python: 3.6.5 Beautiful Soup: 4.4.0 VSCode: 1.41.1
Für den Umgebungsaufbau habe ich mich auf die folgende Lektion von Progate bezogen. Bereiten Sie eine Python-Entwicklungsumgebung vor! (Mac)
Eine Art Python-Bibliothek, die auf HTML-Tags und CSS-Selektoren aus HTML-Daten basiert Sie können das Scraping durchführen. Offizielle Referenz: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ Referenz japanische Übersetzung (Version 3.0): https://tdoc.info/beautifulsoup/
Installieren Sie mit pip. Ich habe auf den folgenden Artikel verwiesen.
[Einführung in Python] Was ist pip? Leicht verständliche Erklärung zur Verwendung! Lassen Sie uns mit einer schönen Python-Suppe kratzen
Sie können es mit dem folgenden Befehl installieren.
pip install beautifulsoup4
Bereiten Sie die HTML-Datei vor, die lokal gelöscht werden soll. Das Folgende ist eine Beispieldatei.
/sample_file/sample.html
<!--~ Abkürzung ~-->
<div>
<ul lass="sample">
<li class="sample">
<a href="aaa">aaaaaa</a>
</li>
<li class="sample">
<a href="bbb">bbbbb</a>
</li>
</ul>
<div class="sample">
<a href="ccc">ccc</a>
</div>
<div class="sample">
<div class="sample">
<a href="ddd">ddddd</a>
</div>
</div>
</div>
<!--~ Abkürzung ~-->
Erstellen Sie als Nächstes ein Python-Programm. Erstellen Sie es im selben Verzeichnis wie die HTML-Datei.
/sample_file/script.py
import bs4
import csv #Modul"CSV"Anruf
#Erstellen Sie eine Suppe aus einer HTML-Datei, die abgekratzt werden soll
soup = bs4.BeautifulSoup(open('sample.html'), 'html.parser')
links = soup.find_all('a') #Holen Sie sich alle Tag-Elemente
csvlist = [] #Erstellen Sie ein Array
for link in links: #Speichern Sie Textdaten eines Tags in einem Array
sample_txt = link.text
csvlist.append(sample_txt)
#Öffnen Sie die CSV-Datei. Wenn die Datei nicht vorhanden ist, erstellen Sie eine neue
f = open("output_sample.csv", "w")
writecsv = csv.writer(f, lineterminator='\n')
writecsv.writerow(csvlist) #Ausgabe
f.close() #CSV-Datei schließen
Ich habe auf den folgenden Artikel verwiesen.
HTML mit Python analysieren (Beautiful Soup) Geben Sie den von Beautiful Soup gekratzten HTML-Code in CSV aus
$ cd sample_file
$ python script.py
Die CSV-Datei wird in dasselbe Verzeichnis wie unten gezeigt ausgegeben.
output_sample.csv
aaaaaa,bbbbb,ccc,ddddd
Wenn Sie VS-Code verwenden, können Sie die Anzeige der CSV erheblich vereinfachen, indem Sie eine Erweiterung namens Rainbow CSV einführen.
before
after
Zur Einführung von Rainbow CSV habe ich auf den folgenden Artikel verwiesen. Einführung von "Rainbow CSV", das das Anzeigen von CSV mit VS-Code erleichtert
Das Verschrotten mit der obigen Methode kann zu vielen Zeilenumbrüchen führen. Wenn Sie die CSV-Datei als Inhalt des Arrays in Startdaten usw. verwenden möchten. Möglicherweise möchten Sie die Zeilenumbrüche entfernen, um eine Zeile zu erstellen. In diesem Fall wird empfohlen, die VS-Code-Ersetzungsfunktion zu verwenden, um alle Zeilenumbrüche zu löschen. Ich habe für diese Methode auf den folgenden Artikel verwiesen. [[Visual Studio Code] So ersetzen Sie den Zeilenvorschubcode durch eine Zeile] (https://kukka.me/vsc-newline/)
Sie können mit Beautiful Soup kratzen. Sie können eine CSV-Datei mit dem Modul "CSV" ausgeben. Wenn die CSV-Datei aufgrund der Struktur der HTML-Datei viele Zeilenumbrüche enthält, Die VS-Code-Ersetzungsfunktion ist praktisch.
https://prog-8.com/docs/python-env https://www.crummy.com/software/BeautifulSoup/bs4/doc/ https://www.sejuku.net/blog/50417 https://www.sejuku.net/blog/75137 https://maku77.github.io/python/parse-html-by-beautiful-soup.html https://5log.hateblo.jp/entry/2019/01/03/075552 https://qiita.com/0w0/items/07a481921a2ac09a049f https://kukka.me/vsc-newline/
Recommended Posts