Hallo liebe Ubuntu-Gemeinde, in meinem Informatikstudium muss ich mich zum ersten Mal mit der Linux-Shell auseinandersetzen. Als Aufgabe hat uns der Prof gebeten den heise-Newsticker (URL: https://www.heise.de/newsticker/archiv/2009/12) mithilfe eines oder mehreren Kommandos, nach der Uhrzeit im Dezember 2009 zu filtern, zu der am meisten Artikel hochgeladen wurden. Als Ausgabe soll neben der Uhrzeit auch noch die Anzahl der Artikel ausgegeben werden. Ich und mehrere Kommilitonen stehen weitestgehend ratlos vor dieser Aufgabe, da wir uns allesamt davor nicht wirklich mit Linux beschäftigt haben. Über Anregungen, Hilfe, Tipps, Lösungsvorschläge usw. wäre ich sehr dankbar! Vielen Dank. P.S https://medium.com/@LiliSousa/web-scraping-with-bash-690e4ee7f98d Dieser Artikel hat mich ein wenig weiter gebracht.
Web Scraping
Anmeldungsdatum: Beiträge: Zähle... |
|
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Das hat ja mit Linux nur wenig zu tun. Welche Linuxshell benutzt Ihr denn, wahrscheinlich bash? Mit bash unter Solaris oder BSD sähe das ganze also wohl weitgehend ähnlich aus, oder? Wie würdest Du die Aufgabe denn mit einem GUI lösen, von Hand, wenn Zeit keine Rolle spielen würde? Wie findest Du alle Artikel vom Dezember 2009 und wie darin die Uhrzeit? Kannst Du den Lösungsweg grob skizzieren? Kannst Du von da zu Pseudocode weitergehen? Ist die häufigste Uhrzeit auf Basis der möglichen Präzision zu ermitteln (auf die Stunde, Minute oder Sekunde genau)? Nützliche Kommandos zum Seitenfinden hast Du ja schon gefunden (curl, wget), zum Filtern der Uhrzeit: grep, zum Zählen: wc. Sicher werden Dich einige belehren, dass Du HTML-Seiten nicht mit grep, sondern xmlstarlet o.dgl. analysieren sollst, aber vom Kontext Linux-Shell-Anfänger würde ich zu grep raten. |
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Oh, ich sehe, das ist alles auf einer Seite, wie praktisch! HTML-Quelltext anschauen, Linux-Piping benutzen (würde man unter MacOSX oder anderen Systemen genauso machen), ein paar Tools aus den Unix-Coreutils benutzen. Für einen geübten User eine Sache von einer Minute. Ergebnis, die top 3:
Das sollte Dir weiterhelfen:
|
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 11 |
Ok wow, vielen Dank schon Mal. Das übersteigt aber bei weitem schon mein Verständnis der bash-Shell. Wir haben uns gerade ein mal mit den Basic Kommandos in der Vorlesung auseinandergesetzt. Könntest du vielleicht ein wenig erklären, wie du vorgegangen bist. Also den groben Ablauf, damit ich verstehe wie man das Ganze angeht. Beste Grüße! |
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Ich habe Deine Frage aufmerksam gelesen und dabei das Schlüsselwort Informatikstudium ausgemacht. Das heißt für mich, dass Du Algorithmen zu entwickeln lernst, lernen willst, vielleicht schon ein wenig gelernt hast. Du hast keine der 4 Rückfragen von mir beantwortet und stellst eine neue,
Du sollst ja nicht lernen Schritte nachzumachen, sondern den Weg zu finden. Ich habe diese Heiseseite für Dezember geöffnet und gesehen, dass da der ganze Dezember schon fertig vor einem liegt. Mit wget habe ich die Webseite runtergeladen und hatte dann die Datei "12" auf der Festplatte.
hat den Quelltext ausgegeben, aber das Geraffel hinter dem letzten, interessanten Eintrag war noch so viel Zeuch, das es unbequem war, so weiter zu suchen. Also habe ich im Browser "Seitenquelltext anzeigen" angeklickt mit einem ähnlichen Resultat für den Beginn des Dokuments. Die erste, interesssante Meldung ist "Saturn ...". Also habe ich mit ctrl-F nach Saturn im Seitenquelltext gesucht und dann den interessierenden HTML-Code für eine Zeile gesehen. Dann habe ich grep, sort und uniq mehrfach in Serie angewendet, um nur die Zeiten auszufiltern, zu sortieren, zu zählen und das Ergebnis nach Häufigkeit zu sortieren. Die Kommandos grep, sort und uniq kann man mit
studieren. Da muss man natürlich am Anfang rumexperimentieren, um die Optionen zu verstehen und zu erkennen, welche weiteren Möglichkeiten sich damit auftun. Das lernst Du natürlich nicht, wenn Du die Lösung abschreibst. Ebenso die Übung im Umgang mit man/--help/info usw. |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 11 |
Tut mir leid, aber ich habe deine Fragen als rhetorisch aufgefasst, um mir sozusagen eine kleine Hilfestellung zu geben. Sodass ich erst mal eine Skizze anfertigen soll, von dort dann zum Pseudocode und dann zur bash usw. Ich hätte nicht erwartet, dass du wirklich eine Antwort darauf haben möchtest. Naja Ich habe ja nicht nach der perfekten Musterlösung gefragt, sondern nur nach dem groben Schema, wie man vorzugehen hat, weil wir Aufgaben wie diese noch nicht behandelt haben und wir uns das nebenher neben des Studiums mehr oder weniger autodidaktisch aneignen sollen. Aber ein grobes Schema hast du mir ja geliefert, mehr wollte ich nicht hören. Vielen Dank dafür! ☺ |
||||
Projektleitung
Anmeldungsdatum: Beiträge: 12822 |
Genau das zu entwickeln ist ja Deine Aufgabe. Das unterscheidet einen Informatiker von einem Programmierer: wir bekommen Problemstellungen und finden Lösungen.
"Autodidaktisch" klingt so, als ob das im Studium unangemessen wäre. Aber ein wesentlicher Punkt des Studiums ist ja genau dieses selbständige Finden von Lösungen zu lernen. |