文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用python批量检查url的有效性

2023-01-31 05:34

关注

因为工作需要,之前用python写了一些批量校验url有效性的小脚本,但并不全面,健壮性较差,现把之整理一下,代码如下:

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

import urllib2
from urllib2 import URLError

result_url=[]
count=0
not_200=0
f=open("img1.txt","r")
img_not_200=open("img_not_200.txt","w+")

for line in f:
    count+=1
    print "on scanning ",count
    try:
    	response=urllib2.urlopen(line)
    except URLError, e:
    	if hasattr(e,'reason'): #stands for URLError
    		print "can not reach a server,writing..."
    		result_url.append(line)
    		not_200+=1
    		img_not_200.write(line)
    		print "write url success!"
    	elif hasattr(e,'code'): #stands for HTTPError
    		print "find http error, writing..."
    		result_url.append(line)
    		not_200+=1
    		img_not_200.write(line)
    		print "write url success!"
    	else: #stands for unknown error
    		print "unknown error, writing..."
    		result_url.append(line)
    		not_200+=1
    		img_not_200.write(line)
    		print "write url success!"
    else:
    	#print "url is reachable!"
    	#else 中不用再判断 response.code 是否等于200,若没有抛出异常,肯定返回200,直接关闭即可
    	response.close()
    finally:
    	pass

print "scanning over,total",count,"; did not response 200:",not_200
f.close()
img_not_200.close()

对这段代码解析如下:

如果url有效,则可以正常通过urlopen取到response,并且response.getcode()等于200;

但若url无效,无论是无法找到服务器还是其他http错误,都无法通过urlopen返回response。这个时候,就需要通过返回的错误类型来判断错误到底是url错误还是http错误。上面的程序是通过错误类型所拥有的属性来判断的。如果错误类型有“code”属性,则代表错误是HTTPError;如果属性有“reason”,则代表是URLError错误。

当然,也可以在except中分别指定抛出的错误类型,进而进行不同的处理。所要注意的是,因为HTTPError是URLError的子类,所以必须在第一个except中指定捕获HTTPError,第二个except中指定捕获URLError,否则的话,你懂的。。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯