Seite 1 von 1

Links aus einer HTML Datei lesen...

Verfasst: Montag 19. Dezember 2011, 16:48
von seishin
Hallo,

mir ist bewusst das diese Frage sicherlich schon des öfteren gestellt wurde.
Schließlich kam ich durch folgenden Thread schon recht weit: http://www.python-forum.de/viewtopic.ph ... &view=next

Nun habe ich jedoch folgendes Problem* Script anbei.
Jegliche Links sollen ausgegeben werden, die tatsächliche Ausgabe beinhaltet jedoch lediglich:
Name: Navigation, Link: #mw-head
Irgendwie stehe ich just auf dem Schlauch und dachte mir frage ich mal nach...

Code: Alles auswählen

from bottle import run, route
import urllib2
import cookielib
import re

@route('/')
def index():
	cj = cookielib.LWPCookieJar()
	opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
	opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10')]
	
	url1 = "http://de.wikipedia.org/wiki/Kategorie:Norwegische_Band"
	html = opener.open(url1).read()
	
	it = re.finditer(r"<[a].*href=[\"\'](.*?)[\"\'].*>(.*?)</[a]>", html, re.I)
	for m in it:
		return "Name: %s, Link: %s" % (m.group(2), m.group(1))
	
run(host='localhost', port=8080)
Weitere Informationsquelle: http://eshca.net/books/DE/python/python ... 15_002.htm


Würde mich sehr über Hinweise freuen...
Vielen Dank schon mal für eure Aufmerksamkeit!

Gruß

Re: Links aus einer HTML Datei lesen...

Verfasst: Montag 19. Dezember 2011, 16:51
von Hyperion
Anstelle von einem RegExp solltest Du das richtige Werkzeug verwenden, nämlich einen HTML-Parser. Ich empfehle da mal HTML-Modul von `lxml` oder `html5lib`.

Re: Links aus einer HTML Datei lesen...

Verfasst: Montag 19. Dezember 2011, 19:27
von jtk
Das ist ja auch ein link... (html sprungmarke)

Bau deine Regexp so um, dass sie eine gruppe ohne (#.*)? hat und prüfe dein ergebnis auf leerstring.
Das lässt sich auch gut mit einem htmlparser kombinieren, da hast du dann ken problem miz z.b. htmk kommentaren

Re: Links aus einer HTML Datei lesen...

Verfasst: Montag 19. Dezember 2011, 20:24
von seishin
Vielen Dank um den Hinweis zu den html Parser, dies nehme ich gern genauer unter die Lupe.

Natürlich auch vielen Dank um den Hinweis mit dem Leerstring bezüglich Kommentare.
Was mich wundert ist das er nur diesen einen Link ausgegeben hat und nicht alle... :K
Aber Gut Parser? Her damit! Vielen Dank, Juche.


Greatz

Re: Links aus einer HTML Datei lesen...

Verfasst: Montag 19. Dezember 2011, 20:47
von nomnom
seishin hat geschrieben:Was mich wundert ist das er nur diesen einen Link ausgegeben hat und nicht alle... :K
Das liegt daran, dass bei `return` die Funktion verlassen wird, und dann bei deiner Schleife nur einmal `return` ausgeführt werden kann. Du solltest eher alle Links in einer Liste speichern und dann "".join(liste) zurückgeben.

Re: Links aus einer HTML Datei lesen...

Verfasst: Dienstag 20. Dezember 2011, 13:56
von seishin
Asche auf mein Haupt!
Da sind sie die Tomaten auf den Augen. :shock:
Wie peinlich...

Danke-sehr...

Re: Links aus einer HTML Datei lesen...

Verfasst: Dienstag 24. Januar 2012, 16:31
von Lenzer
Konntest du das Problem beheben? Wie hast du das gemacht

Re: Links aus einer HTML Datei lesen...

Verfasst: Mittwoch 7. März 2012, 14:46
von seishin
Hoi,

wir hatten dann solch Spielereien begonnen: https://github.com/maitee/LeporelloScraper


Gruß und sorry das ich erst so spät antwortete.

Re: Links aus einer HTML Datei lesen...

Verfasst: Donnerstag 8. März 2012, 15:12
von frabron
Weil ich erst neulich Links aus einem Dokument auslesen musste:

Code: Alles auswählen

from lxml import html

tree = html.parse('http://foo/bar.html')
for element, attribute, link, pos in tree.getroot().iterlinks():
    # aktion
einfach, ne?

Re: Links aus einer HTML Datei lesen...

Verfasst: Sonntag 11. März 2012, 12:22
von Leonidas
seishin hat geschrieben:wir hatten dann solch Spielereien begonnen: https://github.com/maitee/LeporelloScraper
Uhm, warum hat das so eine seltsame Paketstruktur? Seid ihr sicher, dass ihr Python nutzt und nicht Java?

Edit: Ich les jetzt auch den Code, und hab immer mehr das Gefühl dass da jemand Python is not Java nicht gelesen hat. Der Code strotzt so von Java-ismen, denke man kann ihn in Python so auf 1/3 Länge eindampfen. Ein wichtiger Satz draus:
PJE hat geschrieben:Take a step back, and above all, stop writing so much code.

Re: Links aus einer HTML Datei lesen...

Verfasst: Montag 12. März 2012, 11:11
von seishin
Ich bediene mich an sich nur an der beautifull soup kenne aber maitee sehr gut und werde ihm deine Anmerkungen zukommen lassen.

Du hast mit deiner Vermutung recht, maitee kommt aus der Java Welt und ist sehr begeistern von Eclipse.

Mit verbindlichsten Dank.