展开全部
发个以前用urllib2模块来做的62616964757a686964616fe4b893e5b19e31333335343366classHTTPError(urllib2.HTTPDefaultErrorHandler):
def__init__(self):
self.errMsg=''
defgetErrorMsg(self):
returnself.errMsg
defhttp_error_default(self,req,fp,code,msg,hdrs):
ifcode>=400:
self.errMsg=fp.read()
raiseurllib2.HTTPError(req.get_full_url(),code,msg,hdrs,fp)
'''
urllib2postrequest:eg.uploadfile
'''
defsendMultipartPost(url,params,files):
#paramslikethis:{'type':'upload','id':'xxxx'}
#fileslikethis:{'file':'C:/xxxx.txt'}
posterParams=[]
forkeyinparams:
value=params[key]
try:
posterParams.append(poster.encode.MultipartParam(key,value))
exceptException,e:
printe,key,value
raisee
forkeyinfiles:
value=files[key]
try:
value=value.encode(sys.getfilesystemencoding())
posterParams.append(poster.encode.MultipartParam.from_file(key,value))
exceptException,e:
printe,key,value
raisee
try:
datagen,headers=poster.encode.multipart_encode(posterParams)
exceptException,e:
printe,key,value
raisee
ifheadersisNone:
headers={}
try:
request=urllib2.Request(url,datagen,headers)
request.add_header('Accept-encoding','gzip')
request.add_header("Accept","*/*")
#printrequest
#printrequest.get_data()
opener,err=getUrllib2(True,False)
response=opener.open(request)
exceptException,e:
printe,url,files
printerr.getErrorMsg()
raisee
data=response.read()
'''
data=response.read(16*1024)
length=len(data)
_data=None
whilelength:
if_data:data+=_data
_data=response.read(16*1024)
length=len(_data)
'''
if'gzip'==response.headers.get('content-encoding',''):
compressedstream=StringIO.StringIO(data)
gzipper=gzip.GzipFile(fileobj=compressedstream)
data=gzipper.read()
returndata
defgetUrllib2(upload=False,redirect=False):
ifupload:
handlers=poster.streaminghttp.get_handlers()
else:
handlers=[]
err=HTTPError()
handlers.append(err)
handlers.append(getCookie())
try:
opener=urllib2.build_opener(*handlers)
exceptException,e:
printerr.getErrorMsg()
raisee
returnopener,err
defgetCookie():
global_cookieProcessor
cookiefile="./cookies.txt"
try:
httpcookie=cookielib.MozillaCookieJar(cookiefile)
httpcookie.load(ignore_discard=True,ignore_expires=True)
httpcookie=urllib2.HTTPCookieProcessor(httpcookie)
exceptException,e:
printe
httpcookie=_cookieProcessor
#_cookieProcessor=urllib2.HTTPCookieProcessor(cookielib.CookieJar())
returnhttpcookie