lehrkraefte:ks:informatik-glf4-20

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:ks:informatik-glf4-20 [2021/05/10 10:25]
Simon Knaus [L11-L12: Datenanalyse Instagram]
lehrkraefte:ks:informatik-glf4-20 [2021/05/17 10:47]
Simon Knaus
Line 278: Line 278:
   - Welche Fragen könntest du mit diesen Daten bzgl. deines Nutzungsverhalten beantworten?   - Welche Fragen könntest du mit diesen Daten bzgl. deines Nutzungsverhalten beantworten?
  
-==== L9-L10: Datenanalyse ====+==== L9-L12: Datenanalyse ====
 === Ziel === === Ziel ===
 Am Beispiel von Youtube-Daten (Watch-History) können die eigenen Verhaltensmuster mit Excel analysiert werden. Am Beispiel von Youtube-Daten (Watch-History) können die eigenen Verhaltensmuster mit Excel analysiert werden.
Line 297: Line 297:
     * ...     * ...
  
-==== L11-L12: Datenanalyse Instagram ====+====  Datenanalyse Instagram ====
 Analog zur Analyse von Youtube-Daten können auch Instagram-Daten analysiert werden. Zu diesem Zweck müssen die Daten bei Instagram heruntergeladen werden: [[https://www.instagram.com/download/request/|Download-Tool]] (HTML wählen). Analog zur Analyse von Youtube-Daten können auch Instagram-Daten analysiert werden. Zu diesem Zweck müssen die Daten bei Instagram heruntergeladen werden: [[https://www.instagram.com/download/request/|Download-Tool]] (HTML wählen).
   - Lädt diese Daten herunter, entpackt sie und untersucht die heruntergeladenen Daten. Die HTML-Dateien sind miteinander verlinkt und können so navigiert werden.   - Lädt diese Daten herunter, entpackt sie und untersucht die heruntergeladenen Daten. Die HTML-Dateien sind miteinander verlinkt und können so navigiert werden.
Line 370: Line 370:
  
  
 +</code>
 +<code insta_englisch.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/pfad/zum/entpackten/instagram/ordner/"
 +mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; 
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".html"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +            
 +            
 +            # Datum der Form 30.12.2021, 22:13 einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("([A-Z][a-z][a-z]) (\d{1,2}), (\d{4}), (\d{1,2}):(\d{1,2}) ([AP]M)", html)
 +
 +            
 +            if(debug>0):
 +                print(file,": ",len(daten))
 +                debug-=1
 +                   
 +         
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in daten:
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +                
 +                e = [mnum[d[0]]] + [int(x) for x in d[1:-1]]
 +                if d[5]=="PM":  # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0)
 +                   e[3]=(e[3]+12) % 24
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0)
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Wochentag (Mo=0, Di=1, ..., So=6)
 +                # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects
 +                wday = datum.weekday()
 +            
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +            
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat.csv", "w")
 +        f.write(csv)
 +        f.close()
 </code> </code>
 ==== 2. Note: Bewertete Analyse: Abgabe 24. Mai 20121 ==== ==== 2. Note: Bewertete Analyse: Abgabe 24. Mai 20121 ====
  • lehrkraefte/ks/informatik-glf4-20.txt
  • Last modified: 2021/05/17 10:48
  • by Simon Knaus