Externe Links aus Domain extrahieren

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Knightfall

Hallo.

Ich bin neu bei Python und im Forum. Also geht erstmal ein freundlicher Gruss in die Runde.

Meine Frage ist folgende. Ich möchte alle ausgehenden Links zu externen Seiten einer Domain extrahieren und in eine Datei schreiben.

Zu diesem Zweck habe ich mir ein fertiges Snippet gesucht und beschäftige mich nun damit. Allerdings funktioniert es bei mir nicht wie es soll und nun stehe ich ein wenig auf dem Schlauch.

Code: Alles auswählen

import urllib,re
htmlFile = urllib.urlopen("http://www.example.com")
html = htmlFile.read()
regexp_link = r'''</?a((s+w+(s*=s*(?:".*?"|'.*?'|[^'">s]+))?)+s*|s*)/?>w+</a>'''
pattern = re.compile(regexp_link)
links = re.findall(pattern, html)

#print all matches
print links
Wenn ich es ausführe erhalte ich lediglich folgende Ausgabe:
Welche Domain ich auch eintrage, das Ergebnis bleibt gleich. Kann mir bitte jemand sagen was hier schief läuft?

Vielen Dank.
BlackJack

@Knightfall: Du verwendest reguläre Ausdrücke um HTML zu verarbeiten, das läuft schief. :-)

Verwende einen ordentlichen HTML-Parser wie `lxml.html` oder BeautifulSoup, extrahiere die Links und filtere da dann alle heraus die nicht relativ sind oder auf die selbe Domain verweisen.
Knightfall

Hallo.

Dank dir für die Antwort. Leider überfordert mich diese mit meinem aktuellen Wissensstand noch komplett. Ich gelobe Besserung. :D
Antworten