2

我有一个函数可以遍历 vb.net 中的一组链接:

For Each category As HtmlElement In fs.cats
   fs.run_fetch(category)
   outToCSV(fs.results, "C:\Data\test.csv")
   outToCSV(fs.errors, "C:\Data\errors.csv")
Next

它适用于第一个循环,但是一旦进入第二个循环, fs.run_fetch(category) 就会给我*访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))*尝试运行以下命令时

Public Sub run_fetch(ByVal category As HtmlElement)
        Dim itemsonpage As HtmlElementCollection
        Dim title, id, salePrice, regPrice As String
        Dim numberOnSale, currentPage As Integer
        'navigate to category page
        loadPage(category.GetAttribute("href")) **<- error here**
4

1 回答 1

1

也许这对某些人来说可能很明显,但是在 vb.net 中定义为 HTMLElement 或 HTMLElementCollection 的变量始终是引用

因此,当您导航到不同的页面时,对变量的引用会丢失(即,您的变量引用的网页“在内存中”不再存在,并且引用已过时)

我的解决方案是将链接(我从网页中提取的 url)保存到一个列表(字符串)中,因此它们不再引用该页面并且在您清除它之前一直在内存中。

于 2013-07-17T19:17:10.567 回答