python网页请求_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值