XPATH - Найти элемент, в котором дочерние элементы имеют определенное значение - PullRequest
0 голосов
/ 07 июня 2018

Я хочу найти определенное значение с помощью xpath и записать его в мою таблицу Excel.

enter image description here

значение должно быть записано в мою таблицу Excel.

// edit: класс H3 является единственным классом H3 на этом сайте

 <div class="col-md-6 col-xs-12" id="infoBox">
<div class="col-xs-12 thumbnail thumbnail-more">
<div class="text-center hidden-sm hidden-xs" style="margin-top:-22px">
<H1 itemprop="name" class="titleDesktop toUpperCase">Tygra</H1>
<H2 class="productTypeText">Product Type: Funko Pop! Vinyl</H2>
</div>
<div class="clear"></div>
<div class="col-xs-6 text-center">
<div class="progress-bar progress-bar-success" role="progressbar"></div>
<H5><i data-toggle="tooltip" class="fa fa-question-circle-o" data-html="true" title="Value is updated daily from recent eBay sales. See <a style='color:white' href='faqcalc'>FAQ</a> for more info. Last update: 6 June 2018"></i> Trending at:</H5>
<H3 class="valueText">$10</H3>
</div>
<div class="col-xs-6 text-center">
<div class="progress-bar progress-bar-info" role="progressbar"></div>
<H5>#573</H5>
<H5>Release: Dec 2017</H5>
</div>
<div class="clear"><br></div>
<div class="col-xs-6 text-center">
<div class="progress-bar progress-bar-warning" role="progressbar"></div>
<h5>See more:</h5>
<div class="col-xs-12 no-gutter opacityHover">
<a href="/funko/all/thundercats"><div class="col-md-8 col-md-offset-2 col-xs-12 no-gutter" itemprop="category"><img class="img-responsive img-rounded img-center" src="/img/category/thundercats.png" alt="See more in Thundercats"><div class="no-gutter">Thundercats</div></div></a>
</div>

1 Ответ

0 голосов
/ 07 июня 2018

Метод селектора CSS:

Точный селектор CSS для элемента:

#infoBox > div.col-xs-12.thumbnail.thumbnail-more > div:nth-child(3) > h3

CSS query

Что вы можете упроститьдо:

CSS query 2

или даже

CSS query 3

Который у вас естьПолученный документ HTML может быть доступен с помощью любого из следующих селекторов:

.querySelector("#infoBox > div.col-xs-12.thumbnail.thumbnail-more > div:nth-child(3) > h3").InnerText
.querySelector("#infoBox *> div:nth-child(3) > h3").InnerText
.querySelector(".valueText").InnerText

Вот пример того, как вы могли бы извлечь текущую цену ($ 10), используя Internet Explorer и один из селекторов CSSпоказано выше:

Код:

Option Explicit

Public Sub GetInfo()
    Dim IE As Object
    Dim html As Object

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate "https://stashpedia.com/funko/pop-vinyl/thundercats/tygra-exclusive-573"

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

        Set html = .document

        With html
           Debug.Print .querySelector("#infoBox *> div:nth-child(3) > h3").innerText
        End With

        Stop
        'Quit '<== Remember to quit application
    End With
End Sub

Информация о селекторах CSS здесь .


Метод XPath:

Если вы хотите использовать XPath, который не поддерживается описанным выше способом, вы можете использовать Selenium basic , и ваш сценарий может выглядеть следующим образом:

Option Explicit
Public Sub GetInfoSel()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const URL = "https://stashpedia.com/funko/pop-vinyl/thundercats/tygra-exclusive-573"

    With d
        .Start "Chrome"
        .Get URL
       Debug.Print .FindElementByXPath("//*[@id=""infoBox""]/div[1]/div[3]/h3").Text
        'Quit
    End With
End Sub

Примечание: послескачав и установив, вам нужно перейти к инструментам> ссылки в VBE и добавить ссылку на библиотеку Selenium Type

Selenium reference

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