Großartiger HTML-Parser für Shell

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
xT440s
Beiträge: 31
Registriert: 17.11.2014 17:27:38
Lizenz eigener Beiträge: MIT Lizenz

Großartiger HTML-Parser für Shell

Beitrag von xT440s » 22.11.2014 17:21:47

Hallo,

ich wollte euch allen nur von den tollen html-xml-utils vom W3C erzählen, sofern ihr diese nicht kennt. Installation:

Code: Alles auswählen

apt-get install html-xml-utils
In Verbindung mit Curl lassen sich damit extrem einfach HTML-Tags in Webseiten via CSS-Selektoren auslesen, wodurch sich im Handumdrehen tolle Programme schreiben lassen. Ich habe mir zum Beispiel gerade den folgenden Bash-Oneliner geschrieben, der ein deutsches Zufallszitat ausgibt:

Code: Alles auswählen

curl -s http://zitate.net/zitate/zufall.html | hxnormalize -x 2>/dev/null | hxselect -c 'span.quote-quote' -s '}' | tr "\\n" " " | tr -s " " | cut -d '}' -f 1
(Anmerkung: der ganze Murks nach quote-quote dient nur der schöneren Formatierung bzw. der Auswahl eines der mehreren angezeigten Zitate)

Vielleicht kann der eine oder andere von euch ja auch was mit html-xml-utils anfangen :D Ich bin mir sicher, es gibt viele tolle Anwendungszwecke für dieses wunderbare Tool! Falls ihr gute Ideen habt könnt ihr diese ja hier posten.

xT440s
Beiträge: 31
Registriert: 17.11.2014 17:27:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Großartiger HTML-Parser für Shell

Beitrag von xT440s » 22.11.2014 21:29:04

Noch ein Kommando für Reddit-User bzw. alle die eine kurze Ablenkung bei der Arbeit in der Konsole schätzen :D

Code: Alles auswählen

curl -s https://www.reddit.com/r/todayilearned/top/ | hxnormalize -x 2>/dev/null | hxselect -c 'a.title' -s '}' 2>/dev/null | tr "\\n" " " | tr -s " " | cut -d '}' -f 1-3 | sed 's/}/\n\n/g'
Einfach an gewünschten Subreddit anpassen (z.B. todayilearned, science, ...), gewünschte Beiträge anpassen (1-3 liefert die drei besten Posts des Tages, 5 den fünftbesten etc.). Der Einfachheit halber in der .bashrc o.Ä. als Funktion mit zwei Parametern speichern ;)

Antworten