Ruby:检测损坏的链接而不实际抓取URL?

时间:2013-10-30 16:28:58

标签: ruby-on-rails ruby

是否有Ruby gem或Ruby-esque方式检查网页是否有损坏的链接而不抓取实际链接并检查404等等。基本上,我想要一个脱机工作的解决方案,我想检测链接显然是在语法上被破坏了,而不是指向不存在的网页的链接。

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

3 个答案:

答案 0 :(得分:0)

使用nokogiri解析HTML和URI.parse以检查有效的URL。如果URI遇到它认为是无效网址的错误,则会引发错误。

答案 1 :(得分: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

答案 2 :(得分:0)

您可以使用DateTime。如果字符串与它匹配,则它是有效的uri。

String