我已到處尋找這個,但我似乎無法找到答案如何在Ruby的網頁刮api Nokogiri選擇具有空類屬性的元素?在Nokogiri我將如何選擇一個空類屬性的元素?
在CSS中,答案似乎很直接,但在nokogiri中,我一直無法找到答案。下面是我想通過引入nokogiri爲目標的HTML的例子:
<td class="">
我已到處尋找這個,但我似乎無法找到答案如何在Ruby的網頁刮api Nokogiri選擇具有空類屬性的元素?在Nokogiri我將如何選擇一個空類屬性的元素?
在CSS中,答案似乎很直接,但在nokogiri中,我一直無法找到答案。下面是我想通過引入nokogiri爲目標的HTML的例子:
<td class="">
的DOM選擇器的語法去不僅僅是元素的名稱,類別,和IDS更深。您還可以匹配某些屬性值,而class
只是另一個屬性。
要選擇所有td
其中類是一個空字符串:
"td[class='']"
注意,這不是選擇td
是不有一個class屬性設置不同。在這種情況下,你可以使用:
"td:not([class])"
這聽起來像HTML不屬於你,但我會採取不同的方法。如果您使用的是Chrome,請在瀏覽器檢查器的HTML樹中找到該元素,右鍵單擊並單擊copy =>選擇器。然後粘貼;你有一個獨特的選擇器來訪問元素。
儘管Nokogiri不運行Javacript,但事情變得更加複雜。因此,您不能保證瀏覽器檢查器中的DOM與Nokogiri引用的DOM相同。在這種情況下,您需要查看原始頁面源並查看結構是否相同。總而言之,如果您使用像Selenium這樣的可以運行JS的自動瀏覽器,那麼您將有最簡單的時間來抓取其他人的頁面。
# 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
我可以通過這種方式選擇空的類元素,也許你可以嘗試它,你檢查你有其他的語法錯誤嗎?