python网页请求urllib2模块简单封装

来源:互联网 发布:iphone屏幕解锁软件 编辑:程序博客网 时间:2024/05/22 06:28
#!/usr/bin/python#coding: utf-8import base64import urllibimport urllib2import timeclass SendRequest:  '''  This class use to set and request the http, and get the info of response.  e.g. set Authorization Type, request tyep..  e.g. get html content, state code, cookie..  SendRequest('http://10.75.0.103:8850/2/photos/square/type.json',               data='source=216274069', type='POST', auth='base',  user='zl2010', password='111111')  '''  def __init__(self, url, data=None, type='GET', auth=None, user=None, password=None, cookie = None, **header):    '''    url:request, raise error if none    date: data for post or get, must be dict type    type: GET, POST    auth: option, if has the value must be 'base' or 'cookie'    user: user for auth    password: password for auth    cookie: if request with cookie     other header info:     e.g. referer='www.sina.com.cn'        '''    self.url = url    self.data = data    self.type = type    self.auth = auth    self.user = user    self.password = password     self.cookie = cookie           if 'referer' in header:      self.referer = header[referer]    else:      self.referer = None          if 'user-agent' in header:      self.user_agent = header[user-agent]    else:      self.user_agent = None        self.setup_request()    self.send_request()  def setup_request(self):    '''    setup a request     '''    if self.url == None or self.url == '':      raise 'The url should not empty!'      # set request type     #print self.url    #print self.type    #print self.data    #print self.auth    #print self.user    #print self.password      if self.type == 'POST':      self.Req = urllib2.Request(self.url, self.data)    elif self.type == 'GET':      if self.data == None:          self.Req = urllib2.Request(self.url)      else:        self.Req = urllib2.Request(self.url + '?' + self.data)    else:      print 'The http request type NOT support now!'        ##set auth type     if self.auth == 'base':      if self.user == None or self.password == None:        raise 'The user or password was not given!'      else:        auth_info = base64.encodestring(self.user + ':' + self.password).replace('\n','')        auth_info = 'Basic ' + auth_info         #print auth_info        self.Req.add_header("Authorization", auth_info)    elif self.auth == 'cookie':      if self.cookie == None:        raise 'The cookie was not given!'      else:        self.Req.add_header("Cookie", self.cookie)     else:      pass    ##add other auth type here     ##set other header info     if self.referer:      self.Req.add_header('referer', self.referer)    if self.user_agent:      self.Req.add_header('user-agent', self.user_agent)              def send_request(self):      '''    send a request     '''    # get a response object     try:      self.Res = urllib2.urlopen(self.Req)      self.source = self.Res.read()      self.goal_url = self.Res.geturl()      self.code = self.Res.getcode()      self.head_dict = self.Res.info().dict      self.Res.close()    except urllib2.HTTPError, e:      self.code = e.code      print e          def get_code(self):    return self.code      def get_url(self):    return self.goal_url      def get_source(self):            return self.source      def get_header_info(self):    return self.head_dict  def get_cookie(self):    if 'set-cookie' in self.head_dict:      return self.head_dict['set-cookie']    else:      return None            def get_content_type(self):    if 'content-type' in self.head_dict:      return self.head_dict['content-type']    else:      return None      def get_expires_time(self):    if 'expires' in self.head_dict:      return self.head_dict['expires']    else:      return None          def get_server_name(self):    if 'server' in self.head_dict:      return self.head_dict['server']    else:      return None           def __del__(self):    pass   __all__ = [SendRequest,]      if __name__ == '__main__':  '''  The example for using the SendRequest class   '''  value = {'source':'216274069'}  data = urllib.urlencode(value)  url = 'http://10.75.0.103:8850/2/photos/square/type.json'  user = 'wz_0001'  password = '111111'  auth = 'base'  type = 'POST'  t2 = time.time()  rs = SendRequest('http://www.google.com')  #rs = SendRequest(url, data=data, type=type, auth=auth, user=user, password=password)  print 't2: ' + str(time.time() - t2)  print '---------------get_code()---------------'  print rs.get_code()  print '---------------get_url()---------------'  print rs.get_url()  print '---------------get_source()---------------'  print rs.get_source()  print '---------------get_cookie()---------------'  print rs.get_cookie()  rs = None


原创粉丝点击