2014-02-14 50 views
0

如果沒有可用的網站鏈接,我試圖顯示「無網站」。我的代碼如下。它運行但不會顯示「無網站」。檢測條目是否存在錨點

links = page.css("a.track-visit-website") 

links.each do |link| 
    if links == nil 
     puts "no website" 

    else 
     puts "#{link['href']}" 
    end 
end 

新來Nokogiri,我在這裏做錯了什麼。

這裏是腳本,如果你想複製。

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

page = Nokogiri::HTML(open("http://www.yellowpages.com/austin-tx/screen-printing?g=Austin%2C+TX&q=screen+printing")) 


links = page.css("a.track-visit-website") 



links.each do |link| 
    if links == nil? 
     puts "no website" 

    else 
     puts "#{link['href']}" 
    end 
end 
+1

'如果鏈接== nil'。不應該是'如果link == nil'? – Santhosh

+0

無論如何它不工作。仍在測試。 – Seal

回答

2

您需要找到一個代表結果或公司的元素。只有從那裏可以確定該公司是否有網站。

假設你只關心實際的搜索結果中列出的公司,下面將通過企業進行迭代,並得到他們的網站,如果提供或輸出沒有網站:

require 'nokogiri' 
require 'open-uri' 

page = Nokogiri::HTML(open("http://www.yellowpages.com/austin-tx/screen-printing?g=Austin%2C+TX&q=screen+printing")) 

companies = page.css('#results div.result') 
companies.each do |company| 
    website_link = company.at_css("a.track-visit-website") 
    if website_link 
     puts website_link['href'] 
    else 
     puts 'no website' 
    end 
end 
+0

不工作,輸出與上面的代碼片段相同。 – Seal

+0

你可以給一個樣本頁面,以便我們可以重現相同的問題? –

+0

我在原始問題中添加了我的完整腳本,以便複製。 – Seal

1

您正在測試整個鏈接數組爲nil而不是單個元素。試試做

if link.nil? 
    puts "No Website" 
else 
    .... 
+0

這不工作。我想也許會,但我爲每個個人鏈接測試是否爲零。 – Seal

+0

@ user2908778編寫'if link == nil?'與編寫'if link.nil?'有很大的區別' – Phrogz