Невозможно извлечь данные из диапазона itemprop - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть следующее, чтобы извлечь некоторые цены и доступность с веб-страницы.Но я получаю Требуемый объект в:

Установить цену = ie.Document.querySelector (". Price-cont .final-price" )

Почему?

Sub getMetaDataInfo()
Dim ie As New InternetExplorer
Dim mylink As String
Dim wb As Workbook: Set wb = ThisWorkbook
Dim wks As Worksheet
Dim lastrow As Integer
Set wks = wb.Sheets("Info")
Dim i As Integer
lastrow = wks.Cells(Rows.Count, "B").End(xlUp).Row

For i = 2 To lastrow

mylink = wks.Cells([i], 2).Value   

ie.Visible = False
ie.Navigate mylink

Do
DoEvents
Loop Until ie.ReadyState = READYSTATE_COMPLETE

Dim price As Object, availability As Object

Set price = ie.Document.querySelector(".price-cont .price")
wks.Cells(i, "C").Value = price.innerText   

Set availability = ie.Document.querySelector(".inner-box-one .availability")
wks.Cells(i, "D").Value = availability.innerText   

Next i

End Sub

Я пытался вставить задержку, как показано нижеЯ иду в Excel запустить макрос, но ..

1 Ответ

0 голосов
/ 10 декабря 2018

Трудно сказать, не видя HTML / URL.Вы убедились, что селектор правильный?

В противном случае основные две вещи, которые вы можете сделать сейчас, в отношении предоставления достаточного времени для загрузки страницы:

1) Добавьте правильное ожидание перед попыткой выбрать

While ie.Busy Or ie.readyState < 4: DoEvents: Wend

2) Попробуйте синхронизированный цикл, чтобы увеличить время загрузки

Option Explicit
Public Sub LoopUntilSet()
    Dim price As Object, t As Date
    Const MAX_WAIT_SEC As Long = 5

    'your other code

    While ie.Busy Or ie.readyState < 4: DoEvents: Wend
    t = Timer
    Do
        DoEvents
        On Error Resume Next
        Set price = ie.document.querySelector(".price-cont .price")
        If Timer - t > MAX_WAIT_SEC Then Exit Do
        On Error GoTo 0
    Loop
    If price Is Nothing Then Exit Sub

    'other code.....
End Sub

3) Снимите [] с i

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