2014-02-14 52 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