2

我正在实现一个需要抓取网站的工具。我正在使用 anemone 进行爬网,并且在每个 anemone 的页面上,我使用boilerpipe 和 Nokogiri 来管理 HTML 格式等。

我的问题是:如果我得到 500 Internal Server Error,它会使 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 Internal Server Error,应用程序将在 Nokogiri::HTML.parse() 上给出错误。我想避免这个问题。如果服务器给出错误,我想忽略此页面继续计算。

有什么方法可以使用这些工具处理 500 Internal Server Error 和 404 Page Not Found?

亲切的问候,雨果

4

2 回答 2

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
于 2013-09-02T20:57:42.213 回答
0

我遇到了类似的问题。问题和答案在这里

如何使用 Nokogiri 处理 404 错误

于 2013-09-02T20:56:03.673 回答