nur site eigene links parsen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Alo
User
Beiträge: 2
Registriert: Samstag 21. April 2007, 12:37

Samstag 21. April 2007, 12:56

Hiho, also euer forum hat mir ja schon ganz schön geholfen, nun steh ich leider vor einem problem wo ich keine lösung finde

und zwar, ich möchte aus einer webseite die links rausfiltern, und zwar nur mit RE und nicht mit BeatifulSoup

allerdings ist das problem nicht das ich das garnicht hinbekomme, sondern das es auf der seite 4 "arten" von links gibt:

1. href="irgendwas[...]"
2. href="/irgendwas[...]"
3. href="http://www.site[...]"
und
4. href="http://www.fremdesite[...]"

2. und 3. stellt kein problem dar

aber nun möchte ich nur noch 1. haben

wenn ich mit

Code: Alles auswählen

links.append(re.findall('href="(.+?)"',html))
arbeite bekomme ich ja alle

ich bräuchte also irgendwas in der richtung

Code: Alles auswählen

links.append(re.findall('href="(.+?)"' and not 'href="(http://.+?)"',html))
aber das geht ja nicht, also irgendwie hängt da grad was bei mir im kopf schief oder ich komm einfach nicht drauf

mfg alo
BlackJack

Samstag 21. April 2007, 13:33

Auch absolute Angaben inklusive Domain-Namen können auf die gleiche Site verweisen. Es muss ja nicht unbedingt *ein* regulärer Ausdruck sein. Du kannst ja erst einmal alle URLs rausfischen und dann z.B. mit `urlparse` näher untersuchen.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Samstag 21. April 2007, 13:36

Du möchtest nur Methode eins, hab ich dich richtig verstanden?

Wenn ja, könntest du eine Regular-Expression nutzen, die nur Buchstaben/Zahlen und keine Sonderzeichen trifft.
(ungetestet!)

Code: Alles auswählen

links.append(re.findall('href="(\w+?)"',html))
Jedoch ist das auch blööd, da es viele Sonderzeichen in solchen Links geben kann.

Aber... eine Frage hab ich noch. Was exakt möchtest du zu `links` hinzufügen? Vielleicht kann man dir dann besser helfen. Mir ist das aus deinem Post nicht ganz klar.

MfG EnTeQuAk

€dit: Da war einer schneller ;) -- BlackJack hat glaub ich ne bessere Lösung *grinz*
Alo
User
Beiträge: 2
Registriert: Samstag 21. April 2007, 12:37

Samstag 21. April 2007, 13:57

ich möchte 1 2 und 3 haben, also alle links die nur innerhalb der site bleiben und nicht auf fremde server gehen

aber ich werd mir das mal mit urlparse angucken
ich habe mir mit urllib2 den gesamten html code in html reingepackt und möchte daraus alle links aus <a href="[...]"> in links packen um damit dann weiter arbeiten zukönnen

und war nur die links die innerhalb der site bleiben halt

mfg alo
Antworten