python批量检测URL访问状态

前言


由于环境问题弄了两个版本的脚本,下面分享一下。



python2.6.6


照着python3改的

注意字符间隔,python版本…


#-*- coding: utf-8 -*-
#!/usr/bin/python
#\..... --... ..--- ---..\..... ....- .---- --...

#导入模块
import time
from io import open
import urllib2, urllib

#解决中文字符问题
import sys
reload(sys)
sys.setdefaultencoding('utf8')

## 将获取网站状态码以及输出异常域名的功能写成函数,调用的时候只需要将文件路径放进参数即可
def get_error_mode(mode_list):
##定义一个set集合
    error_list= set()
    url_list = open(mode_list, 'r')

    for line in url_list:
    
##设置url格式,去除空行,非空行的行才可以进入条件进行循环
        if len(line.strip()):
            line_no_blank = line.strip()
#设置url格式,加http://头            
            url = "http://"+line_no_blank

            try:
                start = time.clock()
## 配置超时时间
                file = urllib2.urlopen(url,data=None,timeout=10)
## 获取访问状态  
                elapsed = (time.clock() - start)
                print "%s可正常访问" % line_no_blank         
                print "状态码:%s" %  file.getcode()
                print "耗时:%s" % elapsed                
                print "+++++++++++++++++++++++++++++++++++++++"
                
#异常域名会进入except,可以得到出错HTTPError
            except urllib2.HTTPError, e:
                print "%s异常" % line_no_blank

                if hasattr(e, "code"):
                    print "错误状态码: %s" % e.code
                    error_code = unicode(e.code)
                    print "出错原因:%s" % e
                    error_reason = unicode(e)
                    print "+++++++++++++++++++++++++++++++++++++++"

            error_status = error_code + '\t'+error_reason
            error_list.add(line_no_blank+'\t'+error_status+"\n")
           
#异常域名会先进入except,可以得到出错URLError
            except urllib2.URLError, e:
                print "%s异常" % line_no_blank

                
                if hasattr(e, "reason"):
                    print "出错原因:%s" % e.reason
                    error_reason = unicode(e.reason)
                    print "+++++++++++++++++++++++++++++++++++++++"

#配置要写入文件内容
            error_status = error_reason
            error_list.add(line_no_blank+'\t'+error_status+"\n")
                
    url_list.close()

#在终端打印内容
    print "所有访问异常url:"
    for line_lai in error_list:
        print line_lai

#将error_list写入一个文件
    abnormal_list = open('/xxx/xxx/访问异常url.txt','w')
    abnormal_list.writelines(error_list)
    abnormal_list.close()

#下面配置进行批量检测的url
get_error_mode('/xxx/xxx/url.txt')


python3.6.5


照着网友改的


#!/usr/bin/python
#-*-coding: utf-8 -*-
#\..... --... ..--- ---..\..... ....- .---- --...


import urllib.request,urllib.error,time

## 将获取网站状态码以及输出异常域名的功能写成函数,调用的时候只需要将文件路径放进参数即可
def get_error_mode(mode_list):
##定义一个set集合
    error_list= set()
    url_list = open(mode_list, 'r')

    for line in url_list:
##设置url格式,去除空行,非空行的行才可以进入条件进行循环
        if len(line.strip()):
            line_no_blank = line.strip()
            url = "http://"+line_no_blank

            try:
                start = time.clock()
## 配置超时时间
                file = urllib.request.urlopen(url,timeout= 10)
                
## 获取访问状态
                elapsed = (time.clock() - start)
                print "%s可正常访问" % line_no_blank         
                print "状态码:%s" %  file.getcode()
                print "耗时:%s" % elapsed                
                print "+++++++++++++++++++++++++++++++++++++++"

#异常域名会进入except,可以得到出错URLError
            except urllib.error.URLError as e:
                print("%s异常" % line_no_blank)

                if hasattr(e, "code"):
                    print("错误状态码: %s" % e.code)
                    error_code = str(e.code)
                if hasattr(e ,"reason"):
                    print("出错原因:%s" % e.reason)
                    error_reason = str(e.reason)
                
#配置要写入文件内容
                    error_status = error_code + '\t'+error_reason
                    error_list.add(line_no_blank+'\t'+error_status+"\n")
                
    url_list.close()
#在终端打印内容    
    print("所有访问异常域名:")
    for line_lai in error_list:
        print(line_lai)
#将error_list写入一个文件
    abnormal_list = open('/xxx/xxx/访问异常url.txt','w')
    abnormal_list.writelines(error_list)
    abnormal_list.close()

#下面配置进行批量检测的url
get_error_mode('/xxx/xxx/url.txt')

你可能感兴趣的:(脚本,python)