Previous Section  < Day Day Up >  Next Section

Hack 100. Program Google in VB.NET

Create GUI and console Google search applications with Visual Basic and the .NET framework.

Along with the functionally identical C# version [Hack #99], the Google Web APIs Developer's Kit (dotnet/Visual Basic folder) includes a sample Google search in Visual Basic. While you can probably glean just about all you need from the Google Demo Form.vb code, this hack provides basic code for a simple console Google search application without the possible opacity of a full-blown Visual Studio .NET project.

Compiling and running this hack requires that you have the .NET Framework (http://msdn.microsoft.com/netframework/downloads/updates/default.aspx) installed.


9.17.1. The Code

Save the following code to a text file called googly.vb:

' googly.vb

' A Google Web API VB.NET console application.

' Usage: googly.exe <query>

' Copyright (c) 2002, Chris Sells.

' No warranties extended. Use at your own risk.

Imports System

Module Googly

  Sub Main(ByVal args As String( ))

    ' Your Google API developer's key.

    Dim googleKey As String = "insert key here"

    ' Take the query from the command line.

    If args.Length <> 1 Then

      Console.WriteLine("Usage: google.exe <query>")

      Return

    End If

    Dim query As String = args(0)

    ' Create a Google SOAP client proxy, generated by:

    ' c:\> wsdl.exe /l:vb http://api.google.com/GoogleSearch.wsdl

    Dim googleSearch As GoogleSearchService = New GoogleSearchService( )

    ' Query Google.

    Dim results As GoogleSearchResult = googleSearch.

doGoogleSearch(googleKey, query, 0, 10, False, "", False, "", "latin1", 

"latin1")

    ' No results?

    If results.resultElements Is Nothing Then Return

    ' Loop through results.

    Dim result As ResultElement

    For Each result In results.resultElements

      Console.WriteLine( )

      Console.WriteLine(result.title)

      Console.WriteLine(result.URL)

      Console.WriteLine(result.snippet)

      Console.WriteLine( )

    Next

  End Sub

End Module

You'll need to replace insert key here with your Google API key. Your code should look something like this:

' Your Google API developer's key.

Dim googleKey As String = "

12BuCK13mY5h0E/34KN0cK@ttH3Do0R

"

9.17.2. Compiling the Code

Not surprisingly, compiling the code for the VB and .NET application is very similar to compiling the code in C# and .NET [Hack #99] .

Before compiling the VB application code itself, you must create a Google SOAP client proxy. The proxy is a wodge of code custom-built to the specifications of the GoogleSearch.wsdl file, an XML-based description of the Google Web Service, all its methods, parameters, and return values. Fortunately, you don't have to do this by hand; the .NET Framework kit includes an application, wsdl.exe, to do all the coding for you.

Call wsdl.exe with the location of your GoogleSearch.wsdl file and specify that you'd like VB proxy code:

C:\GOOGLY.NET\VB>wsdl.exe /l:vb GoogleSearch.wsdl

If you don't happen to have the WSDL file handy, don't fret. You can point wsdl.exe at its location on Google's web site:

C:\GOOGLY.NET\VB>wsdl.exe /l:vb http://api.google.com/GoogleSearch.wsdl

Microsoft (R) Web Services Description Language Utility

[Microsoft (R) .NET Framework, Version 1.0.3705.0]

Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.

Writing file 'C:\GOOGLY.NET\VB\GoogleSearchService.vb'.

What you get is a GoogleSearchService.vb file with all that underlying Google SOAP-handling ready to go:

'---------------------------------------------------------------------------

' <autogenerated>

'     This code was generated by a tool.

'     Runtime Version: 1.0.3705.288

'

'     Changes to this file may cause incorrect behavior and will be lost if 

'     the code is regenerated.

' </autogenerated>

'---------------------------------------------------------------------------

Option Strict Off

Option Explicit On

Imports System

Imports System.ComponentModel

Imports System.Diagnostics

Imports System.Web.Services

Imports System.Web.Services.Protocols

Imports System.Xml.Serialization

...

    Public Function BegindoGoogleSearch(ByVal key As String, ByVal q As

String, ByVal start As Integer, ByVal maxResults As Integer, ByVal

filter As Boolean, ByVal restrict As String, ByVal safeSearch As

Boolean, ByVal lr As String, ByVal ie As String, ByVal oe As String,

ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As

System.IAsyncResult

        Return Me.BeginInvoke("doGoogleSearch", New Object( ) {key, q, 

start, maxResults, filter, restrict, safeSearch, lr, ie, oe}, callback,

asyncState) End Function

    

    '<remarks/>

    Public Function EnddoGoogleSearch(ByVal asyncResult As System.

IAsyncResult) As GoogleSearchResult

        Dim results( ) As Object = Me.EndInvoke(asyncResult)

        Return CType(results(0),GoogleSearchResult)

    End Function

End Class

...

Now to compile that googly.vb:

C:\GOOGLY.NET\VB>vbc /out:googly.exe *.vb

Microsoft (R) Visual Basic .NET Compiler version 7.00.9466

for Microsoft (R) .NET Framework version 1.00.3705

Copyright (C) Microsoft Corporation 1987-2001. All rights reserved.

9.17.3. Running the Hack

Run Googly on the command line ["How to Run the Hacks" in the Preface], passing it your Google query:

C:\GOOGLY.NET\VB>googly.exe "query words"

The DOS command window isn't the best at displaying and allowing scrollback of lots of output. To send the results of your Google query to a file for perusal in your favorite text editor, append > results.txt


9.17.4. The Results

Functionally identical to its C# counterpart [Hack #99], the Visual Basic hack should turn up about the same results—Google index willing.

Chris Sells and Rael Dornfest

    Previous Section  < Day Day Up >  Next Section