一.首先讲一下统一资源定位符,简单的Web应用被称为URL(统一资源定位器,Uniform Resource Locator)的web地址。URL是大型标识符URI(统一资源标识,Uniform Resource Identifier)的一部分。
网络定位元素:
1.部件:描述
2.user:登录名
3.password:用户的密码
4.host:web服务器运行的机器名或地址
5.port:端口号
二.urllib2模块
urllib2是python的一个获取url(Uniform Resource Locators,统一资源定址器)的模块。它用urlopen函数的形式提供了一个非常简洁的接口。这使得用各种各样的协议获取url成为可能。它同时 也提供了一个稍微复杂的接口来处理常见的状况-如基本的认证,cookies,代理,等等。这些都是由叫做opener和handler的对象来处理的。
import urllib2
response = urllib2.urlopen('http://python.org/')
html = response.read()
三.下面是一个通过访问yago的提供的接口来统计wiki中数据在yago中的覆盖率实例
def coveragerate(infile,outfile):
rfile = open(infile,'r')
wfile = open(outfile,'wa+')
unfindcount = 0.0
while(1):
line = rfile.readline()
tmpline = line
if not line:
break
line = line.split(' ')
URL = 'https://d5gate.ag5.mpi-sb.mpg.de/webyagospotlx/WebInterface?passedQuery=I%3A0%09S%3A'
for i in range(len(line)):
if i == 0:
URL += line[i].strip()
else:
URL += '%20' + line[i].strip()
URL += '%3B'
print URL
req = urllib2.Request(URL)
try:
response = urllib2.urlopen(req)
except URLError,e:
print e.reason
html = response.read().split('\n')
for i in range(len(html)):
if '</div><h2>Results</h2>There were no results.<P>' in html:
unfindcount += 1.0
wfile.write(tmpline.strip() + ' Flase'+'\n')
print 'run'
break
else:
wfile.write(tmpline.strip() + ' True'+'\n')
print 'run'
break
covrate = 1.0 - (unfindcount/len(html))
wfile(covrate)
wfile.close()
rfile.close()
通过观察yago在进行查询的时候URL的变化规则,来补全URL,在进行访问就可以获得该页面的html源码。最后通过分析源码,来判断是否被查询到,最后在统计一下能够被覆盖的数据即可。