在Nokogiri中,我如何选择具有空类属性的元素?

时间:2017-02-23 00:09:57

标签: css ruby nokogiri

我到处寻找这个但是我似乎无法找到关于如何在Ruby的网页抓取api Nokogiri中选择具有空类属性的元素的答案?

在css中答案看起来很直接,但在nokogiri中,我找不到答案。下面是我想用nokogiri定位的html示例:

<td class="">

2 个答案:

答案 0 :(得分:1)

# encoding: UTF-8 
require 'nokogiri'

web = '<a class="ok">selected</a>'


p Nokogiri::HTML(web).xpath('//a[@class="ok"]').text
#=> selected

web = '<a class="">selected</a>'


p Nokogiri::HTML(web).xpath('//a[@class=""]').text
#=> selected

我可以通过这种方式选择空类元素,也许你可以尝试一下,你检查你有其他语法错误吗?

答案 1 :(得分:0)

DOM-selector语法比元素名称,类和id更深入。您还可以匹配某些属性值,class只是另一个属性。

选择类为空字符串的所有td

"td[class='']"

请注意,这与选择设置了类属性的td不同。在这种情况下,您可以使用:

"td:not([class])"

听起来HTML并不属于你,所以我采取了不同的方法。如果您使用的是Chrome,请在浏览器检查器的HTML树中找到该元素,右键单击并单击copy =&gt;选择。然后粘贴;你有一个唯一的选择器来访问该元素。

然而,由于Nokogiri没有运行Javacript,这变得更加复杂。因此,您无法保证浏览器检查器中的DOM与Nokogiri引用的DOM相同。在这种情况下,您需要查看原始页面源并查看结构是否相同。

总而言之,如果您使用像Selenium这样可以运行JS的自动浏览器,那么您将有最简单的时间来抓取其他人的页面。