PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Url aus Seitenquelltext filtern


ashtray
27.01.2010, 23:58
Hi,
ich möchte aus einem Seitenquelltext URLs herausfiltern unter C#, dabei habe ich es schon ein wenig eingeschränkt:

href="http://irgend_eine_url_die_ich_nicht_kenne" rel="nofollow">Title <b>

Die Einschränkung habe ich gemacht weil ich auch den Titel verwerten will.
Dies konnte ich noch auf

http://irgend_eine_url_die_ich_nicht_kenne" r

weiter einschränken.(ja da ist ein r und zwar das von rel)
Leider bekomme ich das " nicht weg bzw. jeder Versuch nur die URL heraus zu filtern ohne das " war bisher erfolglos.
Mein Ansatz bisher war so etwas in der Art

"http(.*)\""

bzw "http(.*)\" r" womit ich das obere herausfiltern konnte
Damit bekomme ich aber

http://irgend_eine_url_die_ich_nicht_kenne" rel="nofollow"

und nicht nur bis zum ersten ".
Die negierung mit ^ vor dem \" gibt nur einen Fehler und andere Sachen führetn auch nciht zu dem gewünschen Ergebnis
Mittlerweile bin ich ein wenig ratlos...

Helft mir Obiwan ihr seid meine letzte Hoffnung ... ährm falscher Film :D

EDIT:
Das mit den ^ am beginn und $ für letztes Zeichen habe ich auch schon getestet
Leider sind die URLs nicht gleich und enden alle unterschiedlich und da ich das ende nicht kenne
(nur das " ist gleich und das will ich ja nicht mehr) brachte mich das nicht wirklich weiter.


eViL_oNe
28.01.2010, 00:08
http://www.pagecolumn.com/tool/url_regex.htm

Firefall
28.01.2010, 00:13
Warum nimmst du nicht gleich ein Browser-Objekt und iterierst über die Links im DOM? Sowas müsste es doch in C# geben.

ashtray
28.01.2010, 00:26
eViL_oNe
Danke aber die Tests funktionieren alle nicht :p jedoch habe ich das mit der Ranbemerkung

(?:x)

bzw.

(?:\")

auf die url mit einem " am ende eingeschränkt ... naja ein Schritt weiter.


Ach du scheisse, Firefall mit DOM und SAX habe ich seit einem oder anderthalb Jahren nichts mehr am Hut gehabt, mich damit wieder zu beschäftigen kostet mehr Zeit als es was nützt für eine kleine Aufgabe.
Du willst mich in den Wahnsinn treiben ;)

Alamar
28.01.2010, 00:36
Nimm doch einfach
/http([^"]+)" /

aber das setzt halt voraus dass die URLs wirklich mit http anfangen (und du nicht relative Hypertext references greifen willst.

ashtray
28.01.2010, 01:02
Wow

http([^\"]+)

das klappt wunderbar =)
Danke sehr Alamar
Da wäre ich nie drauf gekommen.

mrBean45
28.01.2010, 08:10
Hier gibts es noch weitere Beispiele für den Anwendungsfall.

http://regexlib.com/Search.aspx?k=url

ashtray
29.01.2010, 13:20
Danke, auf so etwas stößt man nie beim suchen :p aber auf jede menge Seite die gleich sind...