首页 文章

使用XPATH定位嵌套的HTML数据属性

提问于
浏览
1

我正在努力用XPATH定位一些特定的HTML ...

使用CSS,我知道正确的定位是:

html > body > div.page-content > div.container > div.myaccount > div > div:nth-child(4) > ul > [data-coin="BTC"] > div > div:nth-child(2)

HTML是:

<html lang="en">
   <body style="">
      <div class="page-content">
         <div class="container" style="padding-top:10px;padding-bottom:50px">
            <div class="myaccount">
               <div class="row">
                  <div class="col-md-12">
                     <ul class="listgroup">
                        <li class="hidden-xs hidden-sm list-group-item tradeitem" data-coin="BTC" data-coindisplay="BTC">
                           <div class="row marketrow">
                              <div class="col-sm-2"><img src="/public/img/coinmd/bitcoin.png?v=68" style="height:37px"> &nbsp;Bitcoin</div>
                              <div class="col-sm-2">$23329.28</div>
                              <div class="col-sm-2">$23329.28</div>
                              <div class="col-sm-2">$370,105,221,964</div>
                              <div class="col-sm-1"><span class="moveup">14.76%</span></div>
                              <div class="col-sm-3">
                                 <a href="/buy/btc" class="btn btn-default btn-sm">Buy BTC</a>&nbsp;&nbsp;
                                 <a href="/sell/btc" class="btn btn-default btn-sm">Sell BTC</a>
                              </div>
                           </div>
                        </li>
                     </ul>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </body>
</html>

我试过的XPATH是:

//*[contains(concat( " ", @class, " " ), concat( " ", "col-sm-2", " " ))]

^这有效,但过于通用,因为HTML元素定位每天都会改变 . 它也没有考虑祖父母HTML的数据属性 .

所以我的问题是我需要什么样的XPATH,专门针对这个元素(就像我可以使用CSS)?

<div class="col-sm-2">$23329.28</div>

1 回答

  • 1

    感谢那些为这篇文章做出贡献的人 . 我发现的答案是:
    // * [@ data-coin = 'BTC'] / div / div [2])[1]

相关问题