Regex, mit sed html-Datei zerlegen, ganz kurze Anfängerfrage

Gast #3033381
Lesenswert?

Hallo,

aus einer html-Datei will ich mittels sed das ausgeben, was zwischen 
<title> und </title> steht. Soweit bin ich schon:
1
sed -n 's/.*<title>\([^<]*\).*/\1/p' temp.html

liefert mir den Inhalt des letzten title-Tags, weil das erste .* ja 
"gierig" möglichst viel mitnimmt.

Wie bekomme ich den Inhalt des zweiten, dritten, etc. title-Tags?
Gast #3033436
Lesenswert?

Problem gelöst:
http://alleightllc.wordpress.com/2007/12/13/extracting-htmlxml-tag-text-data-using-sed/

----------------------------------------------------------v
cat temp.html | sed -e 's/<\/title>/<\/title>\n/g' | sed '3q;d' | sed -n 
-e 's/.*<title>\(.*\)<\/title>.*/\1/p'

gibt den Inhalt des 3. <title>-Tags aus.

Eine elegantere Lösung wäre mir dennoch lieber, kann mir jemand helfen?
#3033471
Lesenswert?

HTML/XML mit Regexen parsen funktioniert nicht wirklich gut. Wo sed ist, 
ist meist auch Python vorhanden. Und fertige Lösungen zum RSS parsen 
sollte es dafür reichlich geben. Mit bash+sed geht viel, aber irgendwann 
wird es unhandlich und unlesbar.

EDIT:
Beispiel (damit der Beitrag konstruktiv wird ;) ) mit feedparser
1
import feedparser
2
d = feedparser.parse('http://www.mikrocontroller.net/newsfeed')
3
# oder lokal mit
4
# d = feedparser.parse('blablubb.xml')
5
for e in d.entries:
6
    print e.title

http://pypi.python.org/pypi/feedparser/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren