使用 VB 的小型 Web 代理 - 第二部分






3.80/5 (5投票s)
使用 VB 的小型 Web 代理 - 第二部分
引言
在上一篇文章中,我们看到一个简单的 VB 应用程序,它可以提取特定 URL 的 HTML 页面。 在本文中,我们将构建一个小型网络爬虫,它将遍历给定 URL 中的所有链接。
- 使用所需组件和库设置 Visual Basic 环境
- 打开 Visual Basic 并创建一个新项目(用户 Standard EXE)。
- 从主菜单中选择“项目”->“引用”,并添加以下 Microsoft 库
- Microsoft HTML 对象库
- 按照以下方式将 Microsoft Windows Common Controls 添加到工具箱。 从主菜单中选择“项目”->“组件”。 组件窗口将打开。 在选择“控件”选项卡的情况下,向下滚动并单击组件前面的复选框
- Microsoft Windows Common Control 6.x
- 设置爬虫的 UI
- 添加爬虫的代码
- 单击“开始”按钮时,在给定 URL 下的所有链接中填充列表框
Private Sub cmdStart_Click() ' '1 will populate lstlinks with all the parent links 'in the requested URL getLinks txtURL.Text, 1 ' End Sub
getlinks
函数根据第二个参数填充listbox
或treeview
。 由于参数为1
,因此它会将 URL 下的所有链接填充到listbox
中-
Private Sub getLinks(strURL As String, iParentChild As Integer, _ Optional iParentNo As Integer) ' Dim objLink As HTMLLinkElement Dim objMSHTML As New MSHTML.HTMLDocument Dim objDoc As New MSHTML.HTMLDocument Dim objNode As Node ' Set objDoc = objMSHTML.createDocumentFromUrl(txtURL.Text, vbNullString) ' MousePointer = vbHourglass While objDoc.readyState <> "complete" DoEvents Wend 'get all Links For Each objLink In objDoc.links ' If iParentChild = 1 Then ' lstLinks.AddItem objLink ' ElseIf iParentChild = 2 Then ' 'lstInnerLinks.AddItem objLink Set objNode = trvLinks.Nodes.Add(iParentNo, tvwChild) objNode.Text = objLink 'objNode.Image = "leaf" ' End If ' Next MousePointer = vbNormal ' End Sub
- 如果用户希望进一步深入某些链接,则可以选择链接并按“获取内部链接”按钮
Private Sub cmdGet_Click() ' Dim iCount As Integer 'Dim objNode As New Node If lstLinks.SelCount = 0 Then ' MsgBox "Please Select a Link" Exit Sub Else ' 'objNode.Text = lstLinks.Text 'For iCount = 0 To lstLinks.ListCount - 1 iCount = 0 While iCount <= lstLinks.ListCount - 1 If lstLinks.Selected(iCount) Then trvLinks.Nodes.Add , , , lstLinks.List(iCount) getLinks lstLinks.List(iCount), 2, trvLinks.Nodes.Count lstLinks.RemoveItem (iCount) lstLinks.Refresh Else iCount = iCount + 1 End If Wend 'Next ' End If ' End Sub
- 所有内部链接都将填充到
Treeview
中。 现在,如果用户进一步希望钻取,可以在treeview
中的那些 URL 上双击Private Sub trvLinks_DblClick() ' getLinks trvLinks.SelectedItem.Text, 2, trvLinks.SelectedItem.Index ' End Sub
- 最终屏幕将如下所示
- 单击“开始”按钮时,在给定 URL 下的所有链接中填充列表框
历史
- 2002 年 8 月 12 日:初始发布