Gå til innhold

Anbefalte innlegg

Tror dette er veldig enkelt, men forslagene jeg har fått har vært veldig varierende, og ingen har fungert tilfredstillende.

 

Jeg har html-koden til en nettside i en string. Et eller annet sted i den stringen befinner en bildelink seg som begynner med "http" og slutter med ".jpg". (Så langt har jeg kommet)

 

Jeg ønsker å kunne dra ut linken til bildet fra stringen. Altså dra ut fra og med "http", til og med ".jpg", og lagre hele linken som en ny string.

 

Jeg trenger ikke å dra ut alle linkene hvis det er flere, kun den første koden finner.

 

Forslag?

 

 

Lenke til kommentar
Videoannonse
Annonse

Hvis du ignorerer at det er HTML, kan du bruke System.Text.RegularExpressions. hvis ikke, kan du kanskje bruke XmlDocument. Ellers tror jeg det også finnes en HTML parser, men jeg er usikker. Kanskje WebBrowser kontrollen også kan brukes, men det er kanskje litt tungvint bare for å parse et dokument (ettersom den også laster ned bilder og alt mulig ræl)

 

Regex som kanskje kan virke:

http://(?<Link>[a-zA-Z0-9-%/_]+\.jpg) men har ikke testet...

Endret av GeirGrusom
Lenke til kommentar

Denne koden her skal kunne finne alle jpg bilder i html koden din:

 

string htmlkode = "skefbskbsbsbbjsbgsbbslkbglsbb\nhttp://et.eller.annet.bilde.jpg\naosiugsdifg\nhttp://et-eller-annet-annet-bilde.jpg";
Regex r = new Regex("http://[a-zA-Z0-9.\\/_%-]*.jpg");
foreach (Match m in r.Matches(htmlkode))
Console.WriteLine(m.Value);

Endret av miXer
Lenke til kommentar

Var så enkelt som jeg trodde, fant det ut selv. Veldig ensidig kode som ikke fungerer til alle kildekoder, men den gjør hva jeg trenger ihvertfall:

 

Webclient client = new.Webclient();


string kildekode = client.DownloadString("link");

int startpos = kildekode.IndexOf("http://");

int jpgpos = kildekode.IndexOf(".jpg");

string imglink = kildekode.Substring(startpos, jpgpos - startpos + 4);

Lenke til kommentar

Du må escape . ettersom det er et spesielt tegn. Du trenger ikke escape den siste minusen, ettersom den ikke gir mening uten et tegn etter. Det er heller ikke nødvendig å escape / ettersom det ikke er et reservert ord.

Det kan også hjelpe å gjøre om til verbatim string

 

var reg = new Regex(@"http://(?<Domain>[a-z_\.-]+)/(?<Path>([a-z0-9%_?-]+/)*)(?<Filename>[a-z0-9%?_-]*\.jpg)", RegexOptions.IgnoreCase);

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...