$T6`Mb*M)k0 在web测试,对网页中的超链接进行测试是最基本的工作,最简便的方法当然是使用像xenu之类的工具。但它具体是怎么实现的呢?我想也无外乎是通过http协议,根据超链接地址,向服务端发送请求,然后根据返回的信息进行判断连接的状态。下面是根据这种思路,用python编写的检测网页链接连通性的程序。D~%i-xH)x1wx`+T051Testing软件测试网i*e'{6~3a
[Z3N
首先,建立一个示例网页,其中link1,lin3是不连通的,link2,link4是有效链接6HK1H8[{&Rm051Testing软件测试网QU4@0k+HM9}
4c3fi?VEoh0
6[p)iV%b0 link151Testing软件测试网Y0A#z1]'F7m9[
(e%SZ[kd0 link351Testing软件测试网qM$DHGd!ms
link451Testing软件测试网.JnS.s-DF6q
_(N"\K&Yud.@p,a051Testing软件测试网.UZ-C3U_ PA
使用python进行链接检测,要使用到4个重要模块,过程就是通过urllib抓取目标网页的html代码,然后通过sgmllib模块解析html,获取超链接的列表。然后使用urlparse解析超链接的url,供httplib使用。然后由httplib模块进行最后的请求及验证回复的过程。51Testing软件测试网0YGs9T
S51Testing软件测试网o-^x:?;|.a
sgmllib :用于HTML解析,解析出网页中包含的超链接51Testing软件测试网wGMf@51Testing软件测试网-r~|"L5v7\:o8[
httplib:用于Http协议的操作51Testing软件测试网/|`*NJ1Y)G51Testing软件测试网sO?s'@O1V)PGG
urllib:用于获取网页的html代码51Testing软件测试网fydcI51Testing软件测试网ES3NN Kk,['P
urlparse:解析url地址,把url地址解析成几个部分。cHBr5y'vQd051Testing软件测试网i:T GiL8?
具体实现代码如下:m(oT&aRU0
~RdDet0#-×-coding:gb2312-*-51Testing软件测试网YY&WX[-B0h
import httplib,urllib,urlparse
r|\b5h9n%z4|'g8[0from sgmllib import SGMLParser
0vhyx2A/APhy w0#解析指定的网页的html,得到该页面的超链接列表51Testing软件测试网WiR`D@yHI
class URLLister(SGMLParser):51Testing软件测试网&_#u{,t
TW.v3Y.Y
def reset(self):51Testing软件测试网a(j$R#X-@]aG"y
SGMLParser.reset(self)
{R dmc$`z/R0 self.urls = []51Testing软件测试网n4iN5Ldrh&t