HTML Agility Packを使用すると、 HTMLの解析プロセスを大幅に簡素化できます。
これがあなたが探していることをするための非常に基本的な実装です:
Private Sub DoSearch(query As String)
Dim wc = New WebClient()
wc.DownloadStringAsync(New Uri("http://google.com/search?q=" + query))
AddHandler wc.DownloadStringCompleted, AddressOf ParseResults
End Sub
Private Sub ParseResults(sender As Object, e As DownloadStringCompletedEventArgs)
LvResults.Items.Clear()
If e.Error IsNot Nothing Then
MsgBox(e.Error.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly)
Exit Sub
End If
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument()
htmlDoc.LoadHtml(e.Result)
For Each node In htmlDoc.DocumentNode.SelectNodes("//h3[@class='r']/a")
Dim item As New ListViewItem(node.InnerText)
item.SubItems.Add(CleanURL(node.Attributes("href").Value))
LvResults.Items.Add(item)
Next
LvResults.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
End Sub
Private Function CleanURL(url As String) As String
url = url.Replace("/url?q=", "")
If url.Contains("&") Then url = url.Split("&"c)(0)
Return url
End Function
HTML Agility Packを正常に使用するための秘訣は、正しい結果を生成する正しいXPathを知ることですが、これは、特に初めてのユーザーにとっては注意が必要な場合があります。
したがって、HAP Testbedをダウンロードして、探しているものが正確に得られるまで(変更をテストするためにアプリケーションを継続的にデバッグする必要なしに)、複数のXPathをテストおよび実験できるようにすることを強くお勧めします。
必要に応じて、次のコードを実装する機能サンプルをダウンロードできます:SearchToListView