我到处寻找这个但是我似乎无法找到关于如何在Ruby的网页抓取api Nokogiri中选择具有空类属性的元素的答案?
在css中答案看起来很直接,但在nokogiri中,我找不到答案。下面是我想用nokogiri定位的html示例:
<td class="">
答案 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的自动浏览器,那么您将有最简单的时间来抓取其他人的页面。