Как извлечь цену с сайта, используя Excel VBA? - PullRequest
0 голосов
/ 04 июля 2019

HTML

    <tr>
    <td class = "pricing-description">Price:</td>
    <td class = "price base-price">
    <span>$</span>
    <span> 4.99 </span>

, и я попытался использовать этот код, чтобы получить значение в моем Excel:

myValue = ie.document.querySelector(".price base-price[Price:]").innerText
Worksheets("Sheet1").Range("A1").Value = myValue

Dim erow As Long
Dim ele As Object

Set sht = Sheets("Sheet1")

erow = Sheet1.Cells(rows.Count, 1).End(xlUp).Offset(1, 0).Row

Dim ws As Worksheet

Set ws = ActiveSheet
Set objIE = CreateObject("Internetexplorer.application")

searchterm = InputBox("ENTER CARTER'S SEARCH TERM")

With objIE
    .Visible = True
    .navigate "www.autozone.com"

    Do While .Busy Or _
       .readyState <> 4
        DoEvents
    Loop

    .document.getElementsByClassName("hdinput typeAhead topSearch").item.innerText = searchterm

    .document.querySelector("input[type=submit]").Click
    Do While .readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop


    myValue = ie.document.querySelector(".price base-price[Price:]").innerText
    Worksheets("Sheet1").Range("A1").Value = myValue

Мой ожидаемый результат будет получить цену отвеб-сайт на Excel, и как только это начинает работать, я могу сделать это для многих частей.

1 Ответ

1 голос
/ 04 июля 2019

myValue = IE.document.querySelector(".price base-price[Price:]").innerText

пытается заменить innerText значение узла (предыдущий брат td) на имя атрибута в селекторе атрибутов вместе ссимвол, который обычно используется для обозначения псевдо (:).Кроме того, вам не хватает селектора класса для обозначения base-price, то есть .base-price, в противном случае он становится селектором типа ;и вы указываете родительско-дочерние отношения, используя комбинатор потомков между двумя именами классов, когда мы видим, что элементы td являются родственными.

Вот что говорит ваш селектор:

нажмите, чтобы увеличить

enter image description here

Требуется только прямой класс дляузел, по всей видимости, а затем получить доступ к .innerText:

myValue = IE.document.querySelector(".base-price").innerText

Дополнительная информация:

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