gpt4 book ai didi

ruby-on-rails - 检查 Nokogiri HTML 文档是否可用

转载 作者:数据小太阳 更新时间:2023-10-29 08:20:43 25 4
gpt4 key购买 nike

我想检查用户输入的 URL 实际上是否是一个有效页面。

我试过:

if Nokogiri::HTML(open("http://example.com"))
#DO REQUIRED TASK
end

但这会在尝试打开页面时立即引发错误。我想返回它是否是任何类型的文档的结果。

我要么得到错误:

no such file or directory

或:

getaddrinfo: Name or service not known

取决于我尝试进行检查的方式。

最佳答案

我会从这样的事情开始:

require 'nokogiri'
require 'open-uri'

begin
doc = Nokogiri.HTML(open(url))
rescue Exception => e
puts "Couldn't read \"#{ url }\": #{ e }"
exit
end

puts (doc.errors.empty?) ? "No problems found" : doc.errors

Nokogiri 将文档的 errors 数组设置为解析过程中发生的任何错误的值。

但这只解决了问题的一部分。恶意的人喜欢破坏东西,这很容易破坏。一般来说,要非常小心用户给你的任何东西,尤其是当你的网站暴露在野蛮的互联网上时。

在告诉 OpenURI 加载文件以提供给 Nokogiri 之前,您应该嗅探该 URL 并使用 HTTP HEAD 进行一些健全性检查。请求找出正在检索的内容的大小和 MIME-TYPE。了解这些后,您可以尝试加载文件。

关于ruby-on-rails - 检查 Nokogiri HTML 文档是否可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com