在Nokogiri中使用Xpath逃避下划线的方法

问题描述 投票:0回答:1

我很困惑。鉴于这个HTML。

<div class="v-product">
    <div class="v-product__inner">
        <a href="https://www.xxxxx.com/>
    </div>
<div class="v-product__details"> Description </div>
</div>

我想用XPath和Nokogiri得到一个节点。

我尝试了

parse_page.xpath("//v-product__details") 

但由于节点是空的,所以无法使用。

如何在XPath中转义双下划线?

ruby xpath nokogiri
1个回答
1
投票

问题不在于下划线,而在于你的XPath。

//v-product__details

正在寻找一个类似于 <v-product__details>,而不是什么与 v-product__details 在其 class 属性。

我会用CSS来代替。

parse_page.css('.v-product__details')

但如果你必须使用XPath

parse_page.xpath('//div[contains(@class, "v-product__inner")]')
parse_page.xpath('//*[contains(@class, "v-product__inner")]')
parse_page.xpath('//div[@class="v-product__inner"]')
parse_page.xpath('//*[@class="v-product__inner"]')
...

而且如果 parse_page 来自 Nokogiri::HTML.fragment(...) 那么你就需要在前面加上一个 . 到你的XPath表达式。

parse_page.xpath('.//div[contains(@class, "v-product__inner")]')
...

但实际上,如果可能的话,我会用CSS。

© www.soinside.com 2019 - 2024. All rights reserved.