2017-02-23 23 views
0

我已到處尋找這個,但我似乎無法找到答案如何在Ruby的網頁刮api Nokogiri選擇具有空類屬性的元素?在Nokogiri我將如何選擇一個空類屬性的元素?

在CSS中,答案似乎很直接,但在nokogiri中,我一直無法找到答案。下面是我想通過引入nokogiri爲目標的HTML的例子:

<td class=""> 

回答

0

的DOM選擇器的語法去不僅僅是元素的名稱,類別,和IDS更深。您還可以匹配某些屬性值,而class只是另一個屬性。

要選擇所有td其中類是一個空字符串:

"td[class='']" 

注意,這不是選擇td有一個class屬性設置不同。在這種情況下,你可以使用:

"td:not([class])" 

這聽起來像HTML不屬於你,但我會採取不同的方法。如果您使用的是Chrome,請在瀏覽器檢查器的HTML樹中找到該元素,右鍵單擊並單擊copy =>選擇器。然後粘貼;你有一個獨特的選擇器來訪問元素。

儘管Nokogiri不運行Javacript,但事情變得更加複雜。因此,您不能保證瀏覽器檢查器中的DOM與Nokogiri引用的DOM相同。在這種情況下,您需要查看原始頁面源並查看結構是否相同。總而言之,如果您使用像Selenium這樣的可以運行JS的自動瀏覽器,那麼您將有最簡單的時間來抓取其他人的頁面。

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 

我可以通過這種方式選擇空的類元素,也許你可以嘗試它,你檢查你有其他的語法錯誤嗎?

相關問題