2017-11-07 1 views
-1

간단한 URL 목록이 있는지 테스트하고 있는데, 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 중 하나 (WWW입니다. fakeniallweb.com) 다른 URL보다 다른 문제가 있습니다.

DNS를 확인할 수 없기 때문에 머리글을 요청할 수 없다고 생각합니다.

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() 

감사를했다.

관련 문제