sunrise

每天不断学习,才能不断提升自己。

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  64 随笔 :: 0 文章 :: 92 评论 :: 0 Trackbacks
一.首先讲一下统一资源定位符,简单的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源码。最后通过分析源码,来判断是否被查询到,最后在统计一下能够被覆盖的数据即可。


posted on 2012-09-13 17:05 SunRise_at 阅读(1964) 评论(0)  编辑 收藏 引用 所属分类: 可爱的python

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理