Visual Basi c: ошибка 70, доступ запрещен при работе с html -элементами - PullRequest
0 голосов
/ 29 марта 2020

Для проекта мне нужна небольшая программа, которая автоматически заполняет названия компаний и бизнес-адреса продавцов Amazon в электронной таблице Excel. Программа использует ASIN-коды для перехода на соответствующий Amazon-сайт и нажатия на профиль продавца. Теперь он должен очистить страницу для всей необходимой информации и скопировать соответствующие строки в таблицу Excel. Однако время от времени я получаю сообщение «Ошибка 70: ​​доступ запрещен». Когда я использую функцию отладки и вручную прохожу каждую строку кода, возникает ошибка с гораздо меньшей вероятностью. Ошибка возникает непреднамеренно, но может быть воспроизведена, когда вы просто запускаете код.

К сожалению, я абсолютно не понимаю, когда речь заходит о Visual Basi c. Я собрал необходимые фрагменты кода с различных веб-сайтов и скопировал его так, чтобы он (несколько) работал. Я прошу прощения, если я полностью уничтожил этот код.

Я мало знаю о VB, чтобы самостоятельно решить эту проблему. Было бы здорово, если бы кто-нибудь из вас помог мне. Заранее благодарим вас за ваше время и усилия:).

Здесь вы можете найти три примера ASIN-кодов generi c amazon-products для самостоятельного запуска программы.

Пример -ASIN-коды:

B0753VDT2N

B07RZ2Z524

B07NRMWZC8

'start a new subroutine called SearchBot
    Sub SearchBot()

        'dimension (declare or set aside memory) for our variables
        Dim objIE As InternetExplorer 'special object variable representing the IE browser
        Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
        Dim counter As Integer 'integer variable to count through our ASINS'
        Dim link As String 'link to the items amazon-page'

        Dim linkPrefix As String
        linkPrefix = "https://www.amazon.de/dp/"

        'Counter for the rows in our spreadsheet'
        counter = 2

        'Repeat until every ASIN-Code has been dealt with'
        Do Until Sheets("Sheet1").Range("A" & counter).Value = ""

           'initiating a new instance of Internet Explorer and asigning it to objIE
           Set objIE = New InternetExplorer

           objIE.Visible = False
           link = linkPrefix + Sheets("Sheet1").Range("A" & counter).Value
           objIE.navigate link

           'wait here a few seconds while the browser is busy
           Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

           'click the 'Seller Profile' button'
           objIE.document.getElementById("sellerProfileTriggerId").Click

           'wait again for the browser
           Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

           'for each <a> element in the collection of objects with class of 'a-list-item'...
           For Each aEle In objIE.document.getElementsByClassName("a-list-item")

               'Geschäftsname --> Business name'
               'Here the Error (#70) occurs: Access denied'
               If InStr(aEle.innerText, "Geschäftsname:") > 0 Then
               aEle.innerText = Mid(aEle.innerText, 15)
               Sheets("Sheet1").Range("B" & counter).Value = aEle.innerText
               End If

               'Geschäftsadresse --> Business address'
               If InStr(aEle.innerText, "Geschäftsadresse:") > 0 Then
               aEle.innerText = Mid(aEle.innerText, 18)
               Sheets("Sheet1").Range("C" & counter).Value = aEle.innerText
               'After the Business address has been added to the spreadsheet, it would be'
               'great if the program jumps to the next ASIN-Code'
               End If

           'repeat times the # of ele's we have in the collection
           Next

           'close the browser
           objIE.Quit

           'Jump to the next line in our spreadsheet'
           counter = counter + 1
        Loop

    'exit our SearchBot subroutine
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...