Получить текст внутри элемента <p>внутри тега span с помощью VBA - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть следующая HTML-часть

<div>
<p class="wholesaletext"> Χονδρική Τιμή:&nbsp;<br/>
<span id="our_price_display" class="price" itemprop="price" content="9.9">
<p class="wholesaletext">9,90 €
</span> &chi;&omega;&rho;ί&sigmaf; &Phi;.&Pi;.&Alpha;
<meta itemprop="priceCurrency" content="EUR" />                             
</p>
</p>
</div>

Я пытаюсь получить текст <p class=wholesaletext"> из приведенного выше со следующим

Set price = ie.Document.getElementsByTagName("span")
Dim lnk As Variant        

 For Each lnk In price
    If lnk.className = "price" Then
        wks.Cells(i, "E").Value = lnk.innerText
        Exit For
    End If
 Next

Я ничего не получаю в ячейках.

Я пытался с

Set price = ie.Document.querySelector(".price .wholesaletext")
wks.Cells(i, "E").Value = price.innerText

Я ничего не получаю.

Я пытался

Set price = ie.Document.getElementsByTagName("p")
Dim lnk As Variant        

For Each lnk In price
    If lnk.className = "wholesale" Then
        wks.Cells(i, "E").Value = lnk.innerText
        Exit For
    End If
Next

Но он получает другой текст внутри HTML, а нецена.

Ответы [ 2 ]

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

Лучший способ получить фактический текст - с помощью селектора класса css .wholesaletext Итак,

ie.document.querySelectorAll(".wholesaletext")

Затем получите доступ к тексту и тексту с ценой по индексу

ie.document.querySelectorAll(".wholesaletext").item(0).innerText
ie.document.querySelectorAll(".wholesaletext").item(1).innerText

CSS:

image

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

Почему бы сначала не использовать id вместо имени тега, а затем перейти к следующему: price = ie.Document.getElementByid("our_price_display"), а затем к цене, которую вы использовали бы price.getAttribute("content"), так что вместе это будет:

Set price = ie.Document.getElementByid("our_price_display")

wks.Cells(i, "E").Value = price.getAttribute("content")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...