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

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码。

原文转自:http://www.jbxue.com/article/16585.html

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

例子:

#!/usr/bin/python#coding: utf-8importbase64importurllibimporturllib2importtimeclassSendRequest:'''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=cookieif'referer'inheader:

self.referer=header[referer]else:

self.referer=Noneif'user-agent'inheader:

self.user_agent= header[user-agent]else:

self.user_agent=None

self.setup_request()

self.send_request()defsetup_request(self):'''setup a request'''ifself.url == Noneorself.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.passwordifself.type =='POST':

self.Req=urllib2.Request(self.url, self.data)elifself.type =='GET':ifself.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 typeifself.auth =='base':ifself.user == Noneorself.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_infoself.Req.add_header("Authorization", auth_info)elifself.auth =='cookie':ifself.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 infoifself.referer:

self.Req.add_header('referer', self.referer)ifself.user_agent:

self.Req.add_header('user-agent', self.user_agent)defsend_request(self):'''send a request'''#get a response objecttry:

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()excepturllib2.HTTPError, e:

self.code=e.codeprintedefget_code(self):returnself.codedefget_url(self):returnself.goal_urldefget_source(self):returnself.sourcedefget_header_info(self):returnself.head_dictdefget_cookie(self):if'set-cookie'inself.head_dict:returnself.head_dict['set-cookie']else:returnNonedefget_content_type(self):if'content-type'inself.head_dict:returnself.head_dict['content-type']else:returnNonedefget_expires_time(self):if'expires'inself.head_dict:returnself.head_dict['expires']else:returnNonedefget_server_name(self):if'server'inself.head_dict:returnself.head_dict['server']else:returnNonedef__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()---------------'printrs.get_code()print'---------------get_url()---------------'printrs.get_url()print'---------------get_source()---------------'printrs.get_source()print'---------------get_cookie()---------------'printrs.get_cookie()

rs= None

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航