首页 / 知识
使用python测试网页中超链接的连通性
2023-11-12 13:40:00
在web测试,对网页中的超链接进行测试是最基本的工作,最简便的方法当然是使用像xenu之类的工具。但它具体是怎么实现的呢?我想也无外乎是通过http协议,根据超链接地址,向服务端发送请求,然后根据返回的信息进行判断连接的状态。下面是根据这种思路,用python编写的检测网页链接连通性的程序。
首先,建立一个示例网页,其中link1,lin3是不连通的,link2,link4是有效链接
link2
link3
使用python进行链接检测,要使用到4个重要模块,过程就是通过urllib抓取目标网页的html代码,然后通过sgmllib模块解析html,获取超链接的列表。然后使用urlparse解析超链接的url,供httplib使用。然后由httplib模块进行最后的请求及验证回复的过程。
sgmllib:用于HTML解析,解析出网页中包含的超链接
httplib:用于Http协议的操作
urllib:用于获取网页的html代码
urlparse:解析url地址,把url地址解析成几个部分。
具体实现代码如下:
#-×-coding:gb2312-*-
importhttplib,urllib,urlparse
fromsgmllibimportSGMLParser
#解析指定的网页的html,得到该页面的超链接列表
classURLLister(SGMLParser):
defreset(self):
SGMLParser.reset(self)
self.urls=[]
defstart_a(self,attrs):
href=[vfork,vinattrsifk=='href']
ifhref:
self.urls.extend(href)
#遍历超链接列表,并逐个的发送请求,判断接收后的代码,200为正常,其他为不正常
deffetch(host):
usock=urllib.urlopen(host)
parser=URLLister()
parser.feed(usock.read())
uhost=urlparse.urlparse(host)
forurlinparser.urls:
up=urlparse.urlparse(url)
#因为超链接有两种方式:一种是直接的http://......一种是相对路径,/.../sample.html
#所以要分别处理
ifup.netloc=="":
http=httplib.HTTP(uhost.netloc)
http.putrequest("GET","/"+up.path+"?"+up.params+up.query+up.fragment)
http.putheader("Accept","*/*")
http.endheaders()
else:
http=httplib.HTTP(up.netloc)
http.putrequest("GET",up.path+"?"+up.params+up.query+up.fragment)
http.putheader("Accept","*/*")
http.endheaders()
errcode,errmsg,headers=http.getreply()
iferrcode==200:
printurl,":ok"
else:
printurl,":",errcode
#测试
fetch("http://www.mobiletrain.org/")
代码运行的结果:
http://www.mobiletrain.org/erwerwe.html:404
/sample/lik.html:ok
/sample/lik2.html:404
http://www.mobiletrain.org/:ok
以上内容为大家介绍了使用python测试网页中超链接的连通性,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
linux清空信息的命令?
linux清空信息的命令?,信息,系统,设备,情况,命令,暂停,状态,发行,数字,文件,Linux文件系统操作命令1、df命令:用于显示文件系统的磁盘空间使用linux程序的状态命令?
linux程序的状态命令?,系统,状态,服务,情况,软件,进程,数据,基础,命令,信息,Linux系统中用于查看系统进程状态的命令是什么?1、命令是[ps-aux]。linux命令代码怎么看?
linux命令代码怎么看?,时间,系统,代码,命令,状态,工具,情况,电脑,实时,基础,linux查看系统命令是什么有的,Linux中有多个命令可以用于查看文件python中常用的工具有哪些?
python中常用的工具有哪些?,工具,代码,培训,平台,中国,公司,管理,智能,最新,功能,Python是入门编程的不错选择,现在很多人在转行学习编程时选择比较好用的Python代码编辑器
比较好用的Python代码编辑器,代码,平台,环境,培训,教育,设计,数据,办公,人员,分析,Python是一款非常简单的编程语言,其功能使用起来都十分方便python怎么检验是否安装和如何安装
python怎么检验是否安装和如何安装pip工具?,工具,培训,电脑,版本,命令,脚本,框架,以下,培训班,一下吧,学习过Python的小伙伴都知道,想要安装Pyt报名Python培训选择哪种方式比较好
报名Python培训选择哪种方式比较好?,培训,工作,基础,时间,情况,在线,最划算,环境,系统,方式,Python不仅是一种高级的编程语言,而且还是一种应用深圳python培训课程哪家靠谱?
深圳python培训课程哪家靠谱?,深圳,人工智能,培训,检测,分析,实战,行业,转型,时间,体系,Python语言简单、易学、易读、易维护,学习成本和时间相学了Python之后能做什么工作
学了Python之后能做什么工作,工作,网站,多地,人工智能,基础,设计,项目,培训,爬虫,方向,最近几年,选择学习Python的人数逐年增加。但是,很多人学学习Python有必要报培训班吗?
学习Python有必要报培训班吗?,项目,培训,企业,实战,行业,技术,做好,汽车,行情,体系,伴随着人工智能的广泛应用,Python被广泛应用于web开发、运十行Python代码替换证件照背景颜色
十行Python代码替换证件照背景颜色,照片,代码,培训,背景,颜色,思路,路径,步骤,红色,格式,本文教大家通过Python程序替换证件照背景颜色,以后更For循环如何在Python中工作
For循环如何在Python中工作,工作,项目,代码,培训,流程,示例,序列,语句,语法,实际,Python的for循环通过遍历数组的序列来工作。从本质上讲,它在