vb.netwinformsvisual-studio-2010wikipediaserver.transfer

How Do I Copy Info From Wikipedia Table To Combo Boxes? Visual Basic.Net


need to somehow copy the number of seasons and episodes in each season from a Wikipedia table into two combo boxes. One for seasons and the other for episodes. The apps supposed to allow the user to type in their favorirte show in the top input box. Then fill the first combo box with the number of seasons and when the user selects one the relevant number of episodes are shown

Link to table with number of seasons and number of episodes in each season: http://en.wikipedia.org/wiki/List_of_House_episodes#Series_overview_and_ratings

code:

Public Class Form1
Dim Search As String
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Search = TextBox1.Text
Search = Search.Replace(" ", "+")
Search = "http://www.google.com/search?btnI=I'm+Feeling+Lucky&q=" & Search & "episode+list+wikipedia"

If Asc(e.KeyChar) = 13 Then

WebBrowser1.Navigate(Search)
TextBox1.Text = Search

End If
End Sub
End Class

So far I've found out howto download the page source even manipulate the page a little but I don't know how to use this to get the number of seasons and episodes in each season into combo boxes. Any help would be great thanks

Code:

Imports System.Text.RegularExpressions

Public Class Form1
Dim sourcecode As String
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
sourcecode = ((New Net.WebClient).DownloadString("http://en.wikipedia.org/wiki/List_of_House_episodes#Series_overview_and_ratings "))

Dim Code As String
Dim Information As MatchCollection = Regex.Matches(sourcecode, "<td>(.*?)</td>", RegexOptions.None)
For Each Info In Information
Code = Regex.Replace(Info.ToString, "td>", "", RegexOptions.None)
Code = Regex.Replace(Code, "</td>", "", RegexOptions.None)
MsgBox(Code)
Next
End Sub
End Class

Solution

  • this code grabs the contents of the tables in the site and presents them to a page. you could add some additional code to interate thourgh the tables to get the details you are looking for.

    ' Create a request for the URL.             
        Dim request As WebRequest = WebRequest.Create("http://en.wikipedia.org/wiki/List_of_House_episodes#Series_overview_and_ratings")
        ' If required by the server, set the credentials.    
        request.Credentials = CredentialCache.DefaultCredentials
        ' Get the response.    
        Dim response__1 As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
        ' Display the status.    
        Console.WriteLine(response__1.StatusDescription)
        ' Get the stream containing content returned by the server.    
        Dim dataStream As Stream = response__1.GetResponseStream()
        ' Open the stream using a StreamReader for easy access.    
        Dim reader As New StreamReader(dataStream)
        ' Read the content.    
        Dim responseFromServer As String = reader.ReadToEnd()
        ' Display the content.    
        Console.WriteLine(responseFromServer)
        ' Cleanup the streams and the response.    
        reader.Close()
        dataStream.Close()
        response__1.Close()
    
        'reads the html into an html document to enable parsing    
        Dim doc As IHTMLDocument2 = New HTMLDocumentClass()
        doc.write(New Object() {responseFromServer})
        doc.close()
    
        'loops through each element in the document to check if it qualifies for the attributes to be set    
        For Each el As IHTMLElement In DirectCast(doc.all, IHTMLElementCollection)
            ' check to see if all the desired attributes were found with the correct values    
            Dim qualify As Boolean = True
            If el.tagName = "TABLE" Then
                Dim meta As HTMLTableClass = DirectCast(el, HTMLTableClass)
                Response.Write(el.outerHTML)
    
    
            End If
        Next