-1

是否有 Ruby gem 或 Ruby-esque 方法来检查网页是否有损坏的链接,而无需抓取实际链接并检查 404 等。基本上,我想要一个离线工作的解决方案,我想检测明显在语法上的链接损坏的,而不是指向不存在的网页的链接。

例如,如果一个链接指向“http//stackoverflow.com”,那是一个语法损坏的链接,我想检测它。但是,如果链接指向“ http://www.webpagedoesnotexistyet.com ”并且它返回 404,我可以不检测到它。

4

3 回答 3

0

使用 nokogiri 解析 HTML 和 URI.parse 来检查有效的 URL。如果 URI 遇到它认为是无效的 url,它将引发错误。

于 2013-10-30T18:26:22.220 回答
0

您可以使用URI.regexp. 如果一个字符串匹配它,它是一个有效的 uri。

require 'uri'

def valid_uri?(s)
  !!(s =~ URI.regexp)
end


valid_uri?('http//stackoverflow.com') # => false
valid_uri?('http://www.webpagedoesnotexistyet.com/') # => true
于 2016-02-12T14:50:07.223 回答
0

使用这个:下面的链接是一个链接数组

for link in links do
    begin
        url = URI.parse(link)
        req = Net::HTTP.new(url.host, url.port)
        res = req.request_head(url.path)

        if res.code == "200"
            puts "#{res.code} ok - #{link}"
        else
            puts "#{res.code} error - #{link}"
        end
    rescue
        puts "breaking for #{link}"
    end
end
于 2016-02-12T14:42:16.587 回答