Python 如何检查URL列表是否存在

Python 如何检查URL列表是否存在,python,Python,我正在尝试测试是否存在一个简单的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 = [

我正在尝试测试是否存在一个简单的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 ()
断开的数组代码

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

问题不在于你把它当作一个数组,而是你的一个URL(www.fakeniallweb.com)与你的其他URL有不同的问题

我认为,因为DNS无法解析,所以您不能像您那样请求头部。因此,除了检查响应代码200之外,您还需要额外的检查

也许你可以这样做:

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')
老实说,我怀疑你会发现其他情况下,一个网站返回不同的状态代码。例如,网站可能会返回3xx范围内的内容进行重定向,如果无法访问,则返回403。这并不意味着该网站不存在

希望这有助于您的方式

德雷德干酒店

感谢您的帮助,这是一个未解决的dns错误导致它崩溃

我最后

解决方案

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

谢谢您的帮助。

您遇到了什么错误?另外,最好在中使用真实的变量名,以示对他人的礼貌。