Praktisch gesehen: Ein Python-Skript für Datenjournalisten

Sie sind Datenjournalist? Und haben erste Schritte in Python 3 unternommen? Für Sie habe ich ein kleines Skript geschrieben, das Tabellen aus Webseiten extrahiert und speichert.

#Dieses Script scrapt per bs4 die Tabelle aus einer Website,
#und speichert sie per csv-module als csv-Datei ab. Datei kann
#dann in Google Spreadsheets hochgeladen und bearbeitet werden
import csv
import requests
from bs4 import BeautifulSoup
#1. Schritt: HTML-Code der Website laden
r = requests.get(‚http://frankbi.com/aaja/farmermarkets/‘)
rHTML = r.text
soup = BeautifulSoup(rHTML)
#2. Schritt: In HTM-Seite die richtige Tabelle suchen mit Webdeveloper (#id oder .class finden)
#Entscheiden: Welche Tabellenköpfe benötige ich. Aufschreiben.
datensaetze = []
#3. Schritt: Liste anlegen, die alle <tr> enthält
tableRows = soup.select(‚.datatable tr ‚)
#4. Schritt: einzelne Tabellenreihe holen.
for i in tableRows:
#5. Schritt: Liste anlegen, die alle <td> eines ausgewählten <tr> enthält
tableData = i.select(‚td‘)
#6. Schritt: Sicher stellen, dass nur komplette Reihen angezeigt werden:
if len(tableData) == 8:
#7. Schritt: Datensatz für CSV erzeugen
county = tableData[0].text
marketName = tableData[1].text
address = tableData[2].text
datensatz = [county, marketName, address]
datensaetze.append(datensatz)
tupleDatensaetze = tuple(datensaetze)
#8. Schritt: Datensatz in CSV-Datei schreiben.
#9. Schritt: csv-Datei erzeuegn mit ‚with‘ (öffnet und schließt die Datei)
with open(‚meineDaten.csv‘,’w‘,newline=“) as csvfile:
#10. Schritt: writer-Objekt erzeugen, Daten reinschreiben
writerObject = csv.writer(csvfile)
writerObject.writerow([‚County‘,’Market Name‘,’Address‘,])
writerObject.writerows(tupleDatensaetze)

Vorsicht, Programmiercode! Das folgende Skript liest per Beautiful Soup die Tabelle in einer Website aus und speichert die Daten in einer csv-Datei ab.  Die Datei kann dann in Google Spreadsheets geladen und vom Datenjournalisten ausgewertet werden.

import csv, requests

from bs4 import BeautifulSoup

#1. Schritt: HTML-Code der Website laden

r = requests.get(‚http://frankbi.com/aaja/farmermarkets/‘)

rHTML = r.text

soup = BeautifulSoup(rHTML)

#2. Schritt: In Website die richtige Tabelle suchen mit Webdeveloper (#id oder .class finden)

#Entscheiden, welche Tabellenköpfe ich benötige.  Aufschreiben.

datensaetze = []

#3. Schritt: Liste anlegen, die alle Tabellenreihen enthält

tableRows = soup.select(‚.datatable tr ‚)

#4. Schritt: einzelne Tabellenreihe holen.

for i in tableRows:

#5. Schritt: Liste anlegen, die alle Tabellendaten einer ausgewählten Tabellenreihe enthält

tableData = i.select(‚td‘)

#6. Schritt: Sicher stellen, dass nur die richtigen Reihen angezeigt werden:

if len(tableData) == 8:

#7. Schritt: Datensatz für CSV erzeugen

county = tableData[0].text

marketName = tableData[1].text

address = tableData[2].text

datensatz = [county, marketName, address]

datensaetze.append(datensatz)

tupleDatensaetze = tuple(datensaetze)

#8. Schritt: Datensatz in CSV-Datei schreiben.

# csv-Datei erzeugen mit ‚with‘ (öffnet und schließt die Datei)

with open(‚meineDaten.csv‘, ‚w‘ ,newline=“) as csvfile:

#10. Schritt: writer-Objekt erzeugen, Daten reinschreiben

writerObject = csv.writer(csvfile)

writerObject.writerow([‚County‘,’Market Name‘,’Address‘,])

writerObject.writerows(tupleDatensaetze)

Das Skript lässt sich schnell anpassen. Viel Spaß!

Kommentare

No Comments

Schreiben Sie einen Kommentar

Name *

Mail *

Website