提取多个搜索结果

时间:2014-05-08 18:01:22

标签: html excel vba search web-scraping

我创建了一个VBA应用程序,允许您从canada411.ca网站中提取搜索结果。您只需将值插入值"其中"和"什么"和#34;标题","位置和"电话"会吐出来的。在我的代码中什么="名称"。这是我的代码:

    Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Row = Range("Name").Row And _
 Target.Column = Range("Name").Column Then
  End If

 If Target.Row = Range("Where").Row And _
 Target.Column = Range("Where").Column Then

 'Set Variables What and Where from Canada411.ca to Values on Excel WorkSheet
  Dim IE As New InternetExplorer
  IE.Visible = True
  IE.navigate ("http://canada411.yellowpages.ca/search/si/1/") & _
  Range("Name").Value & "/" & Range("Where").Value

  Do
  DoEvents
  Loop Until IE.readyState = READYSTATE_COMPLETE
  Dim Doc As HTMLDocument
  Set Doc = IE.document
  'Extract from Canada411.ca Source element (first search result)
  Range("Title").Value = Trim(Doc.getElementsByTagName("h3")(0).innerText)
  Range("Phone").Value = Trim(Doc.getElementsByTagName("h4")(0).innerText)
  Range("Location").Value = Trim(Doc.getElementsByClassName("address")(0).innerText)
  IE.Quit

 'Extract for Second Search result

 'Third Search result etc.


  End If
 End Sub

我的问题是我不知道如何在页面上获得剩余的结果,我只能在第一页上获得第一个结果。后续搜索结果的源代码与第一个相同,但我似乎无法使其工作。 (也许在获得第一个代码之后有一个快捷方式,以获得其余的代码?)我是VBA和HTML的新手,并感谢他们的帮助。

2 个答案:

答案 0 :(得分:1)

嗯,你有两种选择。

1)了解如何使用Tools-> References库' Microsoft HTML Object Library'来导航DOM。并以这种方式提取。

2)可以将网页拉入Excel工作表,然后您只需要从每个单元格中提取数据。更容易,但将您与Excel联系起来。使用宏录制器,然后在功能区数据 - >从Web上使用GUI,然后按照向导进行操作。

答案 1 :(得分:0)

在您的链接中更改“1”表示2,3,4 ......这些是页码!

http://canada411.yellowpages.ca/search/si/1/
http://canada411.yellowpages.ca/search/si/2/
http://canada411.yellowpages.ca/search/si/3/
...