如何处理500内部服务器错误和404页面找不到Anemone,Boilerpipe和Nokigiri

时间:2013-09-02 20:35:51

标签: ruby-on-rails ruby nokogiri http-error anemone

我正在实施一个需要抓取网站的工具。我正在使用海葵爬行,并在每个海葵的页面上我使用samppipe和Nokogiri来管理HTML格式等。

我的问题是:如果我收到500内部服务器错误,它会导致Nokogiri失败,因为没有页面。

Anemone.crawl(name) do |anemone|
   anemone.on_every_page do |page|
       if not (page.nil? && page.not_found?)
              result = Boilerpipe.extract(page.url, {:output => :htmlFragment, :extractor => :ArticleExtractor})
              doc = Nokogiri::HTML.parse(result)

       end
    end
end

在上面的情况中,如果存在500内部服务器错误,应用程序将在Nokogiri :: HTML.parse()上给出错误。我想避免这个问题。如果服务器发出错误,我想继续计算忽略此页面。

有没有办法处理500内部服务器错误和404找不到这些工具?

亲切的问候, 雨果

2 个答案:

答案 0 :(得分:5)

# gets the reponse of the link
res = Net::HTTP.get_response(URI.parse(url))

# if it returns a good code
if res.code.to_i >= 200 && res.code.to_i < 400 #good codes will be betweem 200 - 399
  # do something with the url
else
  # skip the object
  next
end

答案 1 :(得分:0)

我遇到了类似的问题。问题和回复在这里

How to handle 404 errors with Nokogiri