2017-12-01 5 views
0

私は初心者です。ウェブサイトが存在しているか、404エラーを返すかどうかを確認するためのルビーファイルを作成しました。それは次のようになります。Ruby - ページ内の特定の結果のURLを確認してください

#!/usr/bin/env ruby 
# encoding: utf-8 

urls = %w(
https://www.nytimes.com/2017/11/30/world/americas/argeeentine-navy-gives-up-hope-of-finding-submarine-crew-alive.html 
) 

require "open-uri" 
require "nokogiri" 

missing = [] 
urls.each do |url| 
    begin 
    open(url).read.include?("Argentina") 
    rescue OpenURI::HTTPError => e 
    if e.message == "404 Not Found" 
     missing << url 
     puts "#{url} is missing!" 
    end 
    end 
end 

、私は、スクリプトを変更し、このコンテンツは現在利用できません」と言う404のメッセージが、「通常の」ウェブサイトを与えていないウェブサイトのURLの長いリストをチェックしたいです"

私の質問は、「このコンテンツは現在利用できません」というメッセージを出すリストのURLを示す結果を得るには、上記のコードを変更する必要がありますか?

私の質問が経験豊富なコーダーのためにどのように愚かなのかについての助けを前もっておかげで!

非常に感謝! トム

答えて

1

ここでは、迅速かつ簡単な実装です:

open(url).read.include?("this content is currently not available") 

検出する「非解決」のWebページのためのあなたのロジックが大きくなるにつれて、あなたは他の方法/クラスにこれらのチェックを抽象化を開始することを望むかもしれません。

+0

こんにちはトムロード、 あなたの迅速な対応のためのthx! 私はあなたの実装を試みました - しかしそれは動作しません。誤ったURLを故意に入力した場合に限ります。どちらが救助をチェックしている15行目のためですかOpenURI :: HTTPError私は推測しますか? 私はあなたの目の前に元のコードで変更を加えました – TomTe

+0

@TomTeあなたはまだ何とかあなたの配列に値を保存する必要があります!以下、 'missing << url'を使用しました。私が提供したコードは、例えば、単純な 'if'文で使用することができます。 –

関連する問題