我很困惑。鉴于这个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>
,而不是什么与 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。