检测条目是否存在锚点

时间:2014-02-14 05:34:10

标签: ruby web-scraping nokogiri

我试图展示"没有网站"如果没有可用的网站链接。我的代码如下。它运行但不会显示"没有网站"。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您正在测试nil的整个链接数组而不是单个元素。尝试做

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