我创建了一个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的新手,并感谢他们的帮助。
答案 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/
...