Нет ошибки, но нет данных в результате VBA HTML Pull - PullRequest
0 голосов
/ 17 декабря 2018

РЕДАКТИРОВАНИЕ: Так что это работает для меня .. Я хочу преобразовать это в моих целях сейчас.Я пытаюсь переключить это на заголовок и цену, но когда я конвертирую строку: Установить ссылки = .document.querySelectorAll (". S-item__link [href]") в Установить ссылки = .document.querySelectorAll (". S-item__title [h3] ")

Тянет« [object HTMLHeadingElement] »для каждой строки - мысли?

Option Explicit
Public Sub GetInfo()
Dim ie As New InternetExplorer, ws As Worksheet, t As Date
Const MAX_WAIT_SEC As Long = 10
Set ws = ThisWorkbook.Worksheets("Sheet1")
With ie
    .Visible = True
    .Navigate2 "https://www.ebay.com/"

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

    ie.document.querySelector("#gh-ac").Value = "Bike"
    ie.document.querySelector("#gh-btn").Click

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

    Dim links As Object, i As Long, count As Long
    t = Timer
    Do
        On Error Resume Next
        Set links = .document.querySelectorAll(".s-item__link[href]")
        count = links.Length
        On Error GoTo 0
        If Timer - t > MAX_WAIT_SEC Then Exit Do
    Loop While count = 0
    For i = 0 To links.Length - 1
        ws.Cells(i + 1, 1) = links.item(i)
    Next
    .Quit
End With

End Sub

1 Ответ

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

Вот пример выполнения поиска Bike на ebay и зацикливания, пока не появятся ссылки

Option Explicit
Public Sub GetInfo()
    Dim ie As New InternetExplorer, ws As Worksheet, t As Date
    Const MAX_WAIT_SEC As Long = 10
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    With ie
        .Visible = True
        .Navigate2 "https://www.ebay.com/"

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

        ie.document.querySelector("#gh-ac").Value = "Bike"
        ie.document.querySelector("#gh-btn").Click

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

        Dim links As Object, i As Long, count As Long
        t = Timer
        Do
            On Error Resume Next
            Set links = .document.querySelectorAll(".s-item__link[href]")
            count = links.Length
            On Error GoTo 0
            If Timer - t > MAX_WAIT_SEC Then Exit Do
        Loop While count = 0
        For i = 0 To links.Length - 1
            ws.Cells(i + 1, 1) = links.item(i)
        Next
        .Quit
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...