ruby - 在 Nokogiri 中使用 Xpath 转义下划线
问题描述
我很困惑。鉴于此 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。
推荐阅读
- windows - 使用批处理脚本将 exe 安装到特定文件夹
- azure-container-service - 限制每个部署或容器的 Log Analytics 日志记录
- python-3.x - 从另一个 defaultdict 获取值并更新原始 dict
- mysql - 将 MySQL Workbench 连接到特定数据库
- java - Spring kafka反序列化中的异常
- remote-validation - 远程验证未命中
- c# - 如何将 XML 加载到列表
- google-apps-script - 如何将文件上传添加到电子表格作为自定义菜单选项?
- java - 如何用java替换PDF中的书签并将替换书签的PDF另存为TXT?
- mysql - PDO 更新 DATETIME,如 %TIME