在 Nokogiri 中使用 Xpath 转义下划线

Escaping Underscore with Xpath in Nokogiri

我很困惑。鉴于此 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 中转义双下划线?

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

//v-product__details

正在寻找像 <v-product__details> 这样的标签,而不是 class 属性中带有 v-product__details 的标签。

我会用 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。