Seite 1 von 1

nur site eigene links parsen

Verfasst: Samstag 21. April 2007, 12:56
von Alo
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

Verfasst: Samstag 21. April 2007, 13:33
von BlackJack
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.

Verfasst: Samstag 21. April 2007, 13:36
von EnTeQuAk
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*

Verfasst: Samstag 21. April 2007, 13:57
von Alo
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