ホームページ > バックエンド開発 > Python チュートリアル > Python Web ページリクエスト urllib2 モジュールの単純なカプセル化コード

Python Web ページリクエスト urllib2 モジュールの単純なカプセル化コード

WBOY
リリース: 2016-06-16 08:45:22
オリジナル
1085 人が閲覧しました

对python网页请求模块urllib2进行简单的封装。

例子:

复制代码 代码如下:

#!/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('\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

##他のヘッダー情報を設定します
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):
'''
リクエストを送信
''
# 取得応答オブジェクト
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()
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) :
パス

__all__ = [SendRequest,]

if __name__ == '__main__':
'''
SendRequest クラスの使用例
'''
value = {'source':'216274069'}
data = urllib.urlencode(value)
url = 'http://10.75.0.103:8850/2/photos/square/type.json'
ユーザー= 'wz_0001'
パスワード = '111111'
認証 = 'base'
タイプ = '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 = なし

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート