2017-11-07 11 views
-1

URLの単純なリストが存在するかどうかをテストしようとしています.1つのURLをテストするときにコードが機能しますが、URLの配列を追加しようとすると、 。URLのリストが存在するかどうかを確認する方法

私は間違っていると思いますか?

シングルURLコードが

import httplib 
c = httplib.HTTPConnection('www.example.com') 
c.request("HEAD", '') 
if c.getresponse().status == 200: 
    print('web site exists') 

ブロークン・アレイコード

import httplib 
Urls = ['www.google.ie', 'www.msn.com', 'www.fakeniallweb.com', 'www.wikipedia.org', 'www.galwaydxc.com', 'www.foxnews.com', 'www.blizzard.com', 'www.youtube.com'] 
for x in Urls: 
    c = httplib.HTTPConnection(x) 
    c.request("HEAD", '') 
    if c.getresponse().status == 200: 
     print('web site exists') 
    else: 
     print('web site' + x + 'un-reachable') 

#To prevent code from closing 
input() 
+2

どのようなエラーが表示されますか? – DavidG

+1

また、実際の変数名を他者の礼儀としてSOで使用する方が良いでしょう。 – mikemaccana

答えて

0

問題は、あなたが配列としてそれを行うことはありませんが、それはあなたのURLの1つ(WWWです。 fakeniallweb.com)はあなたの他のURLとは異なる問題を抱えています。

DNSは解決できないので、HEADをリクエストすることはできません。

try: 
c.request("HEAD", '') 
if c.getresponse().status == 200: 
    print('web site exists') 
else: 
    print('website does not exist') 
except gaierror as e: 
    print('Error resolving DNS') 

は、正直なところ、私はあなたのウェブサイトは、異なるステータスコードを返します。それ以外の場合があります疑う:だからあなただけたぶん、あなたはこのような何かを行うことができ、応答コード200

をチェックする以外に、追加のチェックが必要になります。例えば、ウェブサイトはリダイレクトのために3xxの範囲内に何かを返すかもしれないし、それにアクセスできない場合は403を返すかもしれない。それはウェブサイトが存在しないことを意味するものではありません。

あなたのお役に立てば幸いです。

0

@DriesデRydtあなたの助けを

おかげで、それが出てクラッシュさせ、未解決のDNSエラーでした。

私はすべての助けをLib/socket.py

ソリューション

import socket 
Urls = ['www.google.ie', 'www.msn.com', 'www.fakeniallweb.com', 'www.wikipedia.org', 'www.galwaydxc.com', 'www.foxnews.com', 'www.blizzard.com', 'www.youtube.com'] 
for x in Urls: 
    try: 
     url = socket.gethostbyname(x) 
     print x + ' was reachable ' 
    except socket.gaierror, err: 
     print "cannot resolve hostname: ", x, err 
#To prevent code from closing 
input() 

感謝してしまいました。

関連する問題