【发布时间】:2013-01-14 20:44:29
【问题描述】:
我想检查用户输入的 URL 是否真的是一个有效的页面。
我试过了:
if Nokogiri::HTML(open("http://example.com"))
#DO REQUIRED TASK
end
但这会在尝试打开页面时立即引发错误。我想返回它是否是任何类型的文档的结果。
我要么得到错误:
no such file or directory
或:
getaddrinfo: Name or service not known
取决于我如何进行检查。
【问题讨论】:
-
如果有人将 URL 传递给图像或多 GB 文件怎么办?您的代码将无法处理 Nokogiri 爆炸或无意中对您的主机进行 DOS 操作,因为它耗尽了 RAM。在请求 Nokogiri 解析之前,您需要处理异常并尝试嗅探 URL 以确定要返回的内容。
标签: ruby-on-rails ruby screen-scraping nokogiri