使用VBA在span标签内的<p>元素内获取文本

时间:2018-12-17 09:59:35

标签: excel vba web-scraping

我有以下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 :(得分:1)

为什么不首先使用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")

答案 1 :(得分:1)

获取实际文本的更好方法是使用.wholesaletext的css类选择器 所以,

ie.document.querySelectorAll(".wholesaletext")

然后通过索引访问带有价格的文本和文本

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

CSS: