EveGUn Skrevet 24. oktober 2011 Del Skrevet 24. oktober 2011 Hei. trenger litt hjelp. Jeg har en HTML side jeg skal trekke ut noen tilfeldige koder fra. <form method="post" name="form"> <table align="center" style="border: 3px solid black;"> <input type="hidden" name="wdjimgybbdzfqpfgj" id="wdjimgybbdzfqpfgj" value="" /> <input type="hidden" name="qjnmkzyihw" id="qjnmkzyihw" value="" /> <input type="hidden" name="ghokntpblxl" id="ghokntpblxl" value="" /> <input type="hidden" name="ckgpjlyaprjiwolfa" id="ckgpjlyaprjiwolfa" value="" /> <input type="hidden" name="wolrmpedbjztpnp" id="wolrmpedbjztpnp" value="" /> <input type="hidden" name="dgftciflyrug" id="dgftciflyrug" value="" /> <input type="hidden" name="heprdfdkysgpxg" id="heprdfdkysgpxg" value="" /> <input type="hidden" name="syiicitrfvvsa" id="syiicitrfvvsa" value="" /> <input type="hidden" name="xfyfmdfzidlrlueprxjt" id="xfyfmdfzidlrlueprxjt" value="" /> </tr> <tr> <td onclick="abBytt(this,'wolrmpedbjztpnp');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=1&tull=f906edaf1cad35c347aeee27defaa634"></td> <td onclick="abBytt(this,'syiicitrfvvsa');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=2&tull=f906edaf1cad35c347aeee27defaa634"></td> <td onclick="abBytt(this,'heprdfdkysgpxg');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=3&tull=f906edaf1cad35c347aeee27defaa634"></td> </tr> <tr> <td onclick="abBytt(this,'ghokntpblxl');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=4&tull=f906edaf1cad35c347aeee27defaa634"></td> <td onclick="abBytt(this,'dgftciflyrug');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=5&tull=f906edaf1cad35c347aeee27defaa634"></td> <td onclick="abBytt(this,'ckgpjlyaprjiwolfa');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=6&tull=f906edaf1cad35c347aeee27defaa634"></td> </tr> <tr> <td onclick="abBytt(this,'qjnmkzyihw');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=7&tull=f906edaf1cad35c347aeee27defaa634"></td> <td onclick="abBytt(this,'xfyfmdfzidlrlueprxjt');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=8&tull=f906edaf1cad35c347aeee27defaa634"></td> <td onclick="abBytt(this,'wdjimgybbdzfqpfgj');" style="padding: 6px;"><img width="100" height="100" alt="Bilde" src="bilde.php?b=9&tull=f906edaf1cad35c347aeee27defaa634"></td> </tr> <tr> <td colspan="3" align="right"><input class="kn1" value="Send" type="submit" /></td> </tr> </table></form><!-- START BUNN --> <br /><br /><br /><br /><br /><br /><br /> <table class="bunn" align="center" style="width: 100%; border: 3px solid #000000;"> <tr> <td align="center"> Kodene jeg skal ha ut er kodene som ligger som name på inputtene, feks. "wdjimgybbdzfqpfgj" Jeg ønsker også å hente ut alle linkene til bildene, men dette kan jeg bruke split komandoen, siden jeg har et fast og unik tall per bile jeg kan bruke til å fortelle programmet hvilken kode det skal hente, men de tilfeldige kodene øverst, vet jeg ikke hvordan jeg skal få ut siden jeg ikke har noen måter å skille de ifra hverandre på. Denne bruker jeg til å hente de tilfeldige kodene bildene: public static string Split(string msg, string delim, int part) { try { for (int a = 0; a < part; a++) { msg = msg.Substring(msg.IndexOf(delim) + delim.Length); } if (msg.IndexOf(delim) == -1) return msg; return msg.Substring(0, msg.IndexOf(delim)); } catch { return ""; } } private void extract() { string code1 = Split(Split(html, "bilde.php?b=1", 1), "\"></td>", 0); } Men hvordan kan jeg hente de tilfeldige kodene fra formen?? Mvh. Even Lenke til kommentar
etse Skrevet 24. oktober 2011 Del Skrevet 24. oktober 2011 Hva med å bruke regExp, burde fungere fint. Dette tar forbehold om at kodene du er ute etter alltid kommer i form av lower-case enelske bokstaver. Men dette kan fint endres om det kan komme tall o.s.v. og. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Text.RegularExpressions; namespace testApp { class Program { static void Main(string[] args) { StreamReader fileReader = new StreamReader("file.htm"); string plainText = fileReader.ReadToEnd(); foreach (string key in extract(plainText)) { Console.WriteLine(key); } Console.ReadLine(); } /// <summary> /// Parses some text to find all the keys in it /// </summary> /// <param name="plainText">A plain-text to search through.</param> /// <returns>A list of strings with the keys found</returns> static List<string> extract(string plainText) { List<string> results = new List<string>(); Regex keyRegex = new Regex("<input type=\"hidden\" name=\"(.*?)\" id="); MatchCollection matches = keyRegex.Matches(plainText); foreach (Match m in matches) { results.Add(m.Groups[1].Value); } return results; } } } Lenke til kommentar
GeirGrusom Skrevet 24. oktober 2011 Del Skrevet 24. oktober 2011 Hvis du skal søke etter tekst, så vil du i 95% av tilfellene ønske å benytte Regular Expressions. Dette er noe som er veldig verdifult å lære seg, men som ikke er på langt nær så vanskelig som det kan se ut som. Les om RegEx klassen på MSDN, så skal du i løpet av ganske kort tid klare å løse dette på egenhånd. Lenke til kommentar
snippsat Skrevet 24. oktober 2011 Del Skrevet 24. oktober 2011 (endret) Hvis du skal søke etter tekst, så vil du i 95% av tilfellene ønske å benytte Regular Expressions. Det kan vel diskuteres når det gjelder html og xml. Her kan ofte regex være et dårlig valg,det er en grunn til at det finnes parsere. Bobince har et artig svar her Html -Regex Nå kjenner jeg ikke så godt til parsere for C#,men kan ta et eksempel i python. from BeautifulSoup import BeautifulSoup html = '''\ <form method="post" name="form"> <table align="center" style="border: 3px solid black;"> <input type="hidden" name="wdjimgybbdzfqpfgj" id="wdjimgybbdzfqpfgj" value="" /> <input type="hidden" name="qjnmkzyihw" id="qjnmkzyihw" value="" /> <input type="hidden" name="ghokntpblxl" id="ghokntpblxl" value="" /> <input type="hidden" name="ckgpjlyaprjiwolfa" id="ckgpjlyaprjiwolfa" value="" /> <input type="hidden" name="wolrmpedbjztpnp" id="wolrmpedbjztpnp" value="" /> <input type="hidden" name="dgftciflyrug" id="dgftciflyrug" value="" /> <input type="hidden" name="heprdfdkysgpxg" id="heprdfdkysgpxg" value="" /> <input type="hidden" name="syiicitrfvvsa" id="syiicitrfvvsa" value="" /> <input type="hidden" name="xfyfmdfzidlrlueprxjt" id="xfyfmdfzidlrlueprxjt" value="" />''' soup = BeautifulSoup(html) tag = soup.findAll('input') print [tag[i]['id'] for i in range(len(tag))] ##[u'wdjimgybbdzfqpfgj', u'qjnmkzyihw', u'ghokntpblxl', u'ckgpjlyaprjiwolfa', u'wolrmpedbjztpnp', u'dgftciflyrug', u'heprdfdkysgpxg', u'syiicitrfvvsa', u'xfyfmdfzidlrlueprxjt'] For og finne "bilde" link er det bare og forandere til. tag = soup.findAll('img') print [tag[i]['scr'] for i in range(len(tag))] Endret 24. oktober 2011 av SNIPPSAT Lenke til kommentar
GeirGrusom Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 (endret) Hvis du skal søke etter tekst, så vil du i 95% av tilfellene ønske å benytte Regular Expressions. Det kan vel diskuteres når det gjelder html og xml. Her kan ofte regex være et dårlig valg,det er en grunn til at det finnes parsere. Bobince har et artig svar her Html -Regex Det gjelder ikke bare HTML. Det er ikke noen god idé å bruke regex for å parse et programmeringsspråk. Her er det derimot ikke parsing av HTML, men søk etter tekst med et gitt kriterium. Antagelsen her er at selve formatet ikke endrer seg, og så lenge det er gyldig, så er regex helt greit til dette. Skal du parse HTML, har du Html Agility Pack Endret 25. oktober 2011 av GeirGrusom Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå