python Webリクエストurllib 2モジュール単純パッケージ


#!/usr/bin/python
#coding: utf-8
import base64
import urllib
import urllib2
import time



class 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('
','') 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