Avatar billede dna Nybegynder
14. november 2003 - 01:41 Der er 6 kommentarer og
1 løsning

Hente HTML og læse det igennem.

Hej alle!

jeg vil for sjov rode med et lille program, som kan hente HTML-koden ud fra en given URL og så læse i den... Så jeg kan finde spændende og knap så spændende ting i den! :-)

Vil helst ikke hente det ned i en fil, men evt bare ind i hukommelsen?

Hvordan fixer jeg dette?

dna
Avatar billede ronni112 Nybegynder
14. november 2003 - 01:45 #1
Højreklik på hjemmesiden - Vis kilde. Så skulle den gerne åbne i NOTESBLOK. Du kan evt. ændre dette i indstillinger for internet, hvor du kan angive hvilket program der skal bruges som standard HTMLeditor...

Jeg tror ikke der er et program der lever op til de krav du stiller.
Avatar billede dna Nybegynder
14. november 2003 - 02:22 #2
ronni112: Hvis du nu kiggede en ekstra gang på, hvilken kategori dette er stillet i, så vil du måske opdage, at det er et program jeg selv vil udvikle - og ikke et jeg leder efter. :-)

Søger bare lidt hjælp til at komme igang!

dna
Avatar billede sys64738 Nybegynder
14. november 2003 - 06:50 #3
Her er en funktion som måske kan hjælpe

Public Function OpenURL(ByVal sInURL As String) As String

    Dim iP As Integer
    Dim sURL As String
    Dim sURLHost As String
    Dim sURLPath As String

    Dim abyteReceive(1024) As Byte

    'The path parsing should be more robust ...
    iP = InStr(UCase$(sInURL), "HTTP://")
    If iP > 0 Then
        sURL = Mid$(sInURL, iP + 7)
    Else
        sURL = sInURL
    End If

    iP = InStr(sURL, "/")
    If iP > 0 Then
        sURLHost = Mid(sURL, 1, iP - 1)
        sURLPath = Mid(sURL, iP)
    Else
        sURLHost = sURL
        sURLPath = "/"
    End If

    'should be supporting HTTP 1.1
    Dim s As String = ""
    Dim sGet As String = "GET " & sURLPath & " HTTP/1.0" & CrLf & " Host: " & sURLHost & CrLf & "Connection: Close" & CrLf & CrLf
    Dim asciiGet As Encoding = Encoding.ASCII
    Dim abyteGet() As Byte = asciiGet.GetBytes(sGet)

    Try
        Dim hostentry As IPHostEntry = Dns.GetHostByName(sURLHost)
        Dim hostadd As IPAddress = hostentry.AddressList(0)


        Dim EPhost As IPEndPoint = New IPEndPoint(hostadd, 80)
        Dim sockHTTP As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

        sockHTTP.Connect(EPhost)

        If sockHTTP.Connected = False Then
            OpenURL = "Unable to connect to host: " & sURLHost
            Exit Function
        End If

        sockHTTP.Send(abyteGet, abyteGet.Length, 0)

        Dim iBytes As Integer = sockHTTP.Receive(abyteReceive, abyteReceive.Length, 0)
        s = "HTML from " & sURL & "(" & hostadd.ToString & "):" & CrLf
        s &= asciiGet.GetString(abyteReceive, 0, iBytes)

        Do While iBytes > 0
            iBytes = sockHTTP.Receive(abyteReceive, abyteReceive.Length, 0)
            s &= asciiGet.GetString(abyteReceive, 0, iBytes)
        Loop

        sockHTTP.Close()
        sockHTTP = Nothing

    Catch ex As Exception

        MessageBox.Show(ex.Message)

    End Try

    OpenURL = s

End Function
Avatar billede dna Nybegynder
14. november 2003 - 11:24 #4
Hejsa.. Jeg har desværre lidt travlt nu her... men, takker for dit svar, og kigger på det så snart jeg har tid.

dna
Avatar billede dna Nybegynder
14. november 2003 - 20:15 #5
Din funktion virker fint... men, den kan vist kun forbinde til default siden på et domæne.

Er somom at den kun connecter til hosten... og ikke til den enkelte fil jeg evt. måtte efterspørge i URL´en !?

dna
Avatar billede ronni112 Nybegynder
16. november 2003 - 01:26 #6
DNA > Ser det først nu.
Jeg undskylder
Avatar billede dna Nybegynder
16. november 2003 - 02:02 #7
hehe.. er ok! Jeg fandt dog ud af mit problem og lærte så på samme tid noget om sockets - så det er fint nok!

Til andre der evt. skulle havne i samme problem, så er den nemme løsning at bruge klassen: Webclient fra frameworket. Så skal der bare 3-4 linjer til.

dna
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester