使用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