Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Hei! Har et program som laster inn en nettside og det jeg vil er at den skal hente det siste tallet som står deg og plusse (+) på et en (1) Hvis du skjønner Den er faktisk til her på forumet ( telle tråden ) Så hvis bruker1 skrev: 21456 og bruker2 skrev: 21457 og jeg trykker på add knappen i programmet da skal jeg få opp 21458 på posten er det mulig eller bare noe jeg kan glemme? Evnt. andre språk som kan dette? Lenke til kommentar
GeirGrusom Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Du må (bør) bruke regex til dette (og webclient) Du laster ned siden med WebClient, og parser teksten med regex. Det du må deretter lete etter er den posten med den høyeste post-counten og legge til 1. Hvis du ikke kan VB.NET fra før, er dette neppe det første du begir deg ut på. Dessuten er det juks Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 (endret) Juks nei Hva om det kan gjøre det lettere for forum brukere Jeg kan VB fra før av men aldri brukt regex. EDIT: Trenger hjelp med det regex greiene + sjekke tallet på siste posten. Trenger også hjelp med timer for å oppdatere siden etter XX antall sekunder (tenk jeg sliter med det ) Endret 22. februar 2009 av Gjest Lenke til kommentar
GeirGrusom Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Regex tar litt tid å lære seg, men det er ikke egentlig så vanskelig. For eksempel: "hei på deg" Vil kun matche en string som inneholder "hei på deg" Du kan derimot lete etter spesifikke patterns, for eksempel for å lete etter et tall "[0-9]+" vil lete etter et tall som inneholder minst étt siffer. Du kan gruppere searches ved navn ved å sette "(?<EtTall>[0-9]+)" som gjør at den vil dukke opp som "EtTall" i Groups listen dersom en match ble funnet. Mer enn dette må du nesten lese deg til selv, fordi det er endel å lære seg som jeg ikke egentlig kan lære deg her og nå. Bare lek litt med det. Regex er ofte helt fantastisk nyttig. Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 (endret) Leser på regex nå! Men kan du gi meg en kode for at svar.text skal kun inneholde [0-9] ?? Takk for hjelpen EDIT: Kun [0-9] løst ved hjelp av If Not IsNumeric(svar.Text) Then Men jeg vil gå dypere og få til auto svar ved og plusse (+) på en (1) ved siste svar Der kan du hjelpe meg vel? Endret 22. februar 2009 av Gjest Lenke til kommentar
Wubbable Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 (endret) Du bør bruke Integer.TryParse, ikke IsNumeric. (Microsoft.visualbasic) Svar.Text + 1... Bruk hjernen Endret 22. februar 2009 av Wubbable Lenke til kommentar
GeirGrusom Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Regex er et tekst søke-verktøy. Det du først må gjøre, er å laste ned den aktuelle siden, for eksempel med WebClient. Deretter må du lete etter dette for eksempel <div class="postcolor" id='post-13171625'> </div> En regex for dette kan bli <div class="postcolor" id='post-[0-9]+'>(?<PostText>.*)</div> Hvor da gruppen PostText vil inneholde teksten inne i posten. Deretter må du lete etter et tall i denne teksten som kan være [0-9]+ Hvis denne matcher, gjør du Value om til integer med Integer.Parse, og plusser på 1. Hvordan du skal deretter lage en ny post, må du nesten sjekke ut selv, fordi det er juks Lenke til kommentar
Wubbable Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Definer juks... Det er en tråd for de som kjeder seg i hjel, de teller oppover, og ingen vinner noe Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 (endret) Haha Wubbable ---- Ok GeirGrusom, det var avansert :!: For å finne siste posten i tråden har jeg gjort slik: WebBrowser1.Navigate("http://www.diskusjon.no/index.php?showtopic=1077284&view=getlastpost") Den fungerer og jeg håper til siste posten, der brukeren ser tallet som er postet Noen måte vi kan bruke regex her? Endret 22. februar 2009 av Gjest Lenke til kommentar
GeirGrusom Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 (endret) Du må hente ut HTML koden som blir generert, og bruker regex på den. Den siste matchen vil sannsynligvis inneholde det høyeste tallet. Bruk regexen for HTML node som jeg skrev for å finne de forskjellige postene, deretter kan du bruke den for nummer for å finne tallet inne i den. Jeg sitter på en linux maskin nå, så jeg kan ikke teste alt dette selv. Edit: poenget med telletråden forsvinner hvis du lager en telletråd-bot, gjør den ikke? Edit2: Det er heller ikke nødvendig å bruke hverken IsNumeric eller TryParse, siden regexen har allerede passet på at det er et heltall som står der. Bruk vanlig Parse, det vil uansett aldri komme noen exceptions. Endret 22. februar 2009 av GeirGrusom Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Nja, poenget med tråden forsvinner da Men når du kommer på en Windows maskin, kan du hjelpe meg videre da Hvordan skal jeg putte in koden? Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Ikke for å bumpe! ---- Jeg klarer ikke det her nå Har fått tips om splitt funksjonen (virker det?) Og hvordan skal jeg klare og hente den siste posten med tallet? Har jo: WebBrowser1.Navigate("http://www.diskusjon.no/index.php?showtopic=1077284&view=getlastpost") for å navigere til sisteposten, kanskje det går han å bruke? =S Lenke til kommentar
GeirGrusom Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Jeg kan skrive litt kode fra hukommelsen Dim post_reg As Regex = new Regex("<div class="postcolor" id='post-[0-9]+'>(?<PostText>.*)</div>", RegexOptions.IgnoreCase) Dim m As Match = post_reg.Match(WebBrowser1.PageHTML) Dim posts As New List(Of String) Do While m.Success Posts.Add(m.Groups("PostText")) m = m.NextMatch() Loop Nå skal du ha en liste over alle postene i tråden. Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 (endret) Da tester vi det Tusen Takk! Kommer med tilbakemeldinger, feilmeldiner straks! EDIT: (WebBrowser1.PageHtml) Blå strek under "pagehtml" hva skal stå? (m.Groups("PostText")) Blå strek under hele linjen =S Endret 22. februar 2009 av Gjest Lenke til kommentar
GeirGrusom Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 Ja, der det står " inne i " skal det stå """ eller noe Jeg hater Visuaal Basic Lenke til kommentar
Gjest Skrevet 22. februar 2009 Del Skrevet 22. februar 2009 sjekk posten over, 2 nye error =S Lenke til kommentar
Gjest Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 Ingen som har en løsning til meg? Lenke til kommentar
GeirGrusom Skrevet 23. februar 2009 Del Skrevet 23. februar 2009 En feilmelding sier mer enn tusen ord... hvis en ordlegger seg veldig dårlig altså. Uansett, bare les feilmeldingen. Som sagt så dro jeg dette rett ut av ræva, og forventet egentlig at du satt inn de riktige bitene, fordi jeg er for slapp til å slå opp i MSDN for deg, for det skal du kunne klare utmerket godt selv. Lenke til kommentar
Gjest Skrevet 25. februar 2009 Del Skrevet 25. februar 2009 (m.Groups("PostText")) - her sier den at den ikke kan bli konvertert til string (WebBrowser1.PageHtml) - her sier den at PageHtml ikke er noe medlem av webbrowser1 Noen andre som kan hjelpe meg Lenke til kommentar
GeirGrusom Skrevet 25. februar 2009 Del Skrevet 25. februar 2009 Du prøver ikke å finne ut av det selv jo XP Ved å RTFM Match klassen og dermed Group klassen fant jeg ut at Groups er en collection av Group klasse, og derfor skal du bruke Value egenskapen. m.Groups["PostText").Value Ved å RTFM WebBrowser fant jeg ut på sekunder at det heter DocumentText WebBrowser1.DocumentText 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å