使用各种链接解析VBA网站

时间:2016-03-20 10:36:20

标签: vba loops parsing web

我正在尝试从表格中的网站下载数据。

只要我知道指向该页面的直接链接,实际下载就可以正常工作。一页虽然有各种子页面的数据,但我首先加载链接,然后按照第1页上的每个链接进行操作。

麻烦的是,一旦我加载子页面,保存初始链接的对象变量就会丢失。如何保留对象变量?

到目前为止我的代码看起来像这样:

AutoScrollPosition.Y

基本上我在For Each中启动ieApp.navigate后,由于ieApp有一个新页面,rcl-Object / ahref对象丢失了。如何在保持向前移动到新页面的同时“保留”对象值?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您不能简单地创建一个新对象来打开子链接并将对象传递给子例程以获取数据吗?

set ie2 = CreateObject(internetexplorer.application)
ieApp.Navigate "http://www.website.com/blabla"
Do While ieApp.Busy: Sleep 500: DoEvents: Loop
Do Until ieApp.readyState = READYSTATE_COMPLETE: DoEvents: Loop

Set rcl = ieApp.Document.getElementsbyClassName("col-md-3")

For Each ahref In rcl(0).getElementsByTagName("a")
   ie2.Navigate ahref.href
   Do While ie2.Busy: Sleep 500: DoEvents: Loop
   Do Until ie2.readyState = READYSTATE_COMPLETE: DoEvents: Loop

   'Now get the data

   Call subSaveRecords ie2
Next

或者您可以在更改页面之前将链接添加到集合或数组。

ieApp.Navigate "http://www.website.com/blabla"
Do While ieApp.Busy: Sleep 500: DoEvents: Loop
Do Until ieApp.readyState = READYSTATE_COMPLETE: DoEvents: Loop

Set rcl = ieApp.Document.getElementsbyClassName("col-md-3")
For Each ahref in rcl(0).getElementsByTagName("a")
   linkCollection.add ahref.href
Next ahref

For Each ahref In linkCollection
   ieApp.Navigate ahref
   Do While ieApp.Busy: Sleep 500: DoEvents: Loop
   Do Until ieApp.readyState = READYSTATE_COMPLETE: DoEvents: Loop

   'Now get the data

   Call subSaveRecords
Next