ich hoffe, ich bin hier richtig, da ich denke, dass pandas und numpy ein guter Ausgangspunkt sind für meine Problemstellung.
Also wie bereits in anderen Fragestellungen geht es um die Analyse von Headern. Nun stehe ich aber vor einem Problem und bin mir nicht ganz sicher wie am besten herangehen soll.
Wenn ich Header von einigen wenigen URLs einlesen möchte kann ich mir die Daten sowohl mit dem csv.writer als auch pandas in eine csv Datei schreiben lassen. Dann kann ich manuell hingehen und diese Daten auswerten.
Da ich nun aber 8 verschiedene Browser verwende, muss ich feststellen, dass die Reihenfolge der Header unterschiedlich ist und die Anzahl der Daten manuell unhandlich wird, wenn ich beispielsweise 8 * 30 Webseiten abfrage.
ich hatte gedacht, dass eine Möglichkeit wäre die Daten als Dictionaries in einer Liste zu verpacken, ungefähr so:
Code: Alles auswählen
import pandas as pd
import numpy as np
test = pd.DataFrame({'Browser': ['firefox_linux', 'firefox_win', 'opera_linux'],
'OS': ['Kali_Linux', 'Windows10', 'MacOS'],
'URL': ['http://python.de', 'http://example.com', 'http://github.com'],
'User-Agent': ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 OPR/62.0.3331.43',
'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'],
'Server': ['Apache-Coyote/1.1', 'Apache', 'Apache/2.4.18 (Ubuntu)']},
index=pd.Index(range(3), name='idx'))
test.to_csv('foo.csv')
pd.read_csv('foo.csv')
Allerdings ist der Code für meine Zwecke Blödsinn. Natürlich hätte ich dann eine schöne Tabelle, aber die Variablen wären ja nicht richtig zugeordnet.Den Code habe ich entsprechend der Doku: https://pandas.pydata.org/pandas-docs/s ... 10min.html ummodeliert
Um die Tabelle auswerten zu können, bräuchte ich eindeutige Spalten:
Index, Browser, OS, User-Agent, Server, Content-Length, Content-Language + ... n
Wenn ich Daten also auslese und die Reihenfolge der hereinkommenden Daten variieren, sind also unbekannt, gibt es dann eine Möglichkeit, die dennoch automatisiert Variablen zuordnen zu lassen?.
Beispielsweise wird in python per default kein DNT (DoNotTrack) attribut ausgegeben, in Firefox schon (es sein denn man baut den header nach). Bei Python müsste dann Naan angegeben sein, bei Firefox wäre dann als Eintrag '1' zu sehen. Die Server unterscheiden sich von mal zu mal, auch wenn die gleiche Seite gescannt wird... usw. es können A/B Tests auf den Seiten vorkommen, was ebenfalls zu einer unterschiedlichen Datenstruktur führt.
Macht es hier Sinn machine learning anzuwenden? Hat Scikit-learn hier vielleicht Möglichkeiten anzusetzen? Wenn man einen Spamfilter mit der bayesianischen Methode baut, dann trainiert man ja im Grunde auch einen Algorithmus, damit dieser erkennt, was spam ist und was nicht und kann am Ende unbekannte Daten verarbeiten und zuordnen (korrigiert mich, wenn ich falsch liege). Ich musste das zumindest mal in einem Tutorial machen, dort hatten wir dann 500 Text Dateien, mit E-Mail Headern und Schimpfwörtern und 500 Text Dateien mit regulären Mails. Diese haben wir dann unterteilt in zwei Ordner "Spam" & "Ham". Wenn ich also je Browser einen Ordner erstelle mit Text Dateien und den entsprechenden Headern... wäre das realistisch oder habe ich hier einen Denkfehler?
Ich bin für jeden Tip dankbar, der Zielführend ist und wenn einfach der Link zu einer Dokumentation ist für irgendeine hilfreiche Bibliothek, die ich mir anschauen soll.
Ich hoffe, der Text war nicht zu verwirrend und danke vorab.