python网页请求urllib2模块简单封装代码
python网页请求urllib2模块简单封装代码
发布时间:2016-12-28 来源:查字典编辑
摘要:对python网页请求模块urllib2进行简单的封装。例子:复制代码代码如下:#!/usr/bin/python#coding:utf-8...

对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

##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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新python学习
热门python学习
脚本专栏子分类