Gegevens uit een website halen

Status
Niet open voor verdere reacties.

GooGooJansen

Gebruiker
Lid geworden
16 jul 2006
Berichten
513
Hallo,
Ik denk dat dit een hele lastige vraag is, maar ik wil gegevens uit een website halen. Ik dacht aan: Bron bestand openen, zoeken naar een bepaald woord, daarachter de gegevens eruit halen.

Maar ik heb geen flauw idee hoe ik dat moet doen?! Als ik te veel vraag op een dag dan moeten jullie het gewoon zeggen:P Dan doe ik wel wat minder vragen :D
 
Dit geeft je de html code in de body container ;)
Dim htmlBron As String = WebBrowser1.Document.Body.InnerHtml
 
Sorry, maar hier snap ik helemaal niks van?!:shocked::confused::(

Edit:
Geeft dit de inhoud van de pagina aan visual basic? En hoe moet je daar dan in zoeken?
 
Laatst bewerkt:
Na die toekenningsopdracht zit de html van de body in de string htmlBron. Je kan dan met instring ofzo gaan zoeken waar een bepaald woord voorkomt :)
 
Sorry maar ik snap er echt helemaal niks van :( Ik heb op google gezocht, maar ik zie niet hoe je moet zoeken in een string :( Ik gok dat dit nog heel lastig gaat worden, aangezien die de cijfers na het woord moet pakken...
 
Wat is precies de bedoeling? Waarom haal je gegevens uit html?

Er van uitgaand dat je dus enkel de tag weet waarna het staat, en dat die tag daar ook niet voor voorkomt, werkt deze code:

Code:
Option Strict On : Option Explicit On

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim numbers As String = getStrFromHtml("<DIV>", 5)
        MessageBox.Show(numbers)
    End Sub

    Private Function getStrFromHtml(ByVal startTag As String, _
    ByVal numbersLenght As Integer) As String
        Dim htmlCode As String = WebBrowser1.Document.Body.InnerHtml

        If Not htmlCode.Contains(startTag) Then
            MessageBox.Show("Tag niet gevonden")
            Return ""
        End If

        Dim tagLocation As Integer = htmlCode.IndexOf(startTag) + startTag.Length
        Return htmlCode.Substring(tagLocation, numbersLenght)
    End Function
End Class

Het is echter een stuk handiger als je ook een sluittag hebt, dan kan je strings met verschillende lengtes eruit hale ;)
 
Ik weet niet of je het kent, maar PTC sites. Ik wil een programma maken dat al het geld dat je hebt bij elkaar op telt. Op een stats pagina in zo'n site staat er: Total balance: (bedrag)
Ik wil dus als er bijvoorbeeld:
Total balance: $2.15
Dan moet het programma 2.15 pakken en in veld stoppen :)
 
Wil je dat je progie bij 1 specifieke site werkt, of bij alle dergelijke sites? (het 2e lijkt me redelijk moelijk xD)
 
Ik dacht dat ik het bij een site laat werken, en dan bij een andere site doe ik het opnieuw erop plakken (tabs in het programma) en dat bij iedere site. Dan doe ik kolom 1 + kolom 2 = kolom 3
:)

Ik kan je het script (zover als ik heb) ook even doorsturen?
 
Hmm, ik heb eerlijk gezecht niet echt een idee hoe jouw probleem best opgelost word, dus het heeft niet echt veel zin om me het door te sturen.

Hoop dat iemand anders hier wat meer ervaring/inzicht mee heeft :)
 
Oh, jammer :( Je script werkt wel! Het heeft nog niet gezegd Tag niet gevonden!...

Waar kan ik de tag invullen (in het script)? Ik kan het niet vinden :(
 
Laatst bewerkt:
Je moet dus gewoon ergens in een procedure de volgende code zetten
Dim numberString As String = getStrFromHtml("<DIV>", 5)

vervang <DIV> door de tag van je keuze, en 5 door de lengte van de getallen string die erna komt in je html file.

daarna kan je numberString gebruiken om een textveld ofzo op te vullen
textbox1.text = numberString
 
Ik zou in zo'n geval voor regex kiezen of gewoon zelf een parser schrijven. (een parser is in jouw geval misschien iets handiger omdat je de functionaliteit vaker wilt gebruiken. Als je goed nadenkt over het ontwerp van je parser dan kun je het zonder al te veel problemen in andere projecten gebruiken)

Het voorbeeld wat bn2vs heeft gegeven biedt wel het nadeel dat het niet zoekt naar meerdere tags. (stel dat je alle 'links' uit een bepaalde pagina wilt filteren; zijn code geeft je dan telkens het zelfde resultaat. En daar zou je in dat geval dus weinig aan hebben. In jouw voorbeeld waarbij je alleen een bepaalde waarde wilt ophalen moet het wel voldoende zijn, aangezien de tag waarschijnlijk uniek zal zijn.)
 
CoD, waar kan ik info over het maken van zo een parser vinden?
Alvast bedankt :)
 
Als ik DIV vervang, dan pakt die niet het getal erachter? Of wel? Want dat getal veranderd namelijk iedere dag :(
 
CoD, waar kan ik info over het maken van zo een parser vinden?
Alvast bedankt :)

I-will-use-Google-before-asking-dumb-questions.gif


:D

Als ik DIV vervang, dan pakt die niet het getal erachter? Of wel? Want dat getal veranderd namelijk iedere dag :(

Je hebt een begin-tag en een eind-tag. Als je de begin-tag gevonden hebt, dan zoek je van daaruit gewoon naar de eind-tag, en de data die daartussen staat is de data die je nodig hebt.
 
LOL :D
ik weet niet op wat ik precies moet googelen, daarom vraag ik het :p
 
Zou dat getal niet in een scherm moeten komen? Ik heb DIV veranderd in een ander woord, maar ik krijg niks :(

EDIT:
Er zit een fout in het script, en het geeft dus OOK niet een melding als er geen getal achter staat. Als ik DIV vervang doo askdja;klfhsjsa dan zegt die nog niks :(
 
Laatst bewerkt:
Euhm, waar heb jij die code dan precies gezet?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan