怎样用python模拟表单post
答案:2 悬赏:20
解决时间 2021-03-14 19:21
- 提问者网友:迷茫庸人
- 2021-03-14 03:28
这是从qq空间里找的
最佳答案
- 二级知识专家网友:短发女王川岛琦
- 2021-03-14 04:48
简答:
需要你自己去(用工具)分析网页在post时候都发送了哪些参数和值,然后再用程序去模拟。
详解:
我写的,算是史上最全的了,自己看吧:
如何用Python,C#等语言去实现抓取静态网页 模拟登陆网站
(此处不能贴地址,请自己用google搜标题,即可找到帖子地址)
需要你自己去(用工具)分析网页在post时候都发送了哪些参数和值,然后再用程序去模拟。
详解:
我写的,算是史上最全的了,自己看吧:
如何用Python,C#等语言去实现抓取静态网页 模拟登陆网站
(此处不能贴地址,请自己用google搜标题,即可找到帖子地址)
全部回答
- 1楼网友:傲娇菇凉
- 2021-03-14 04:56
发个以前用urllib2模块来做的
class httperror(urllib2.httpdefaulterrorhandler):
def __init__(self):
self.errmsg = ''
def geterrormsg(self):
return self.errmsg
def http_error_default(self, req, fp, code, msg, hdrs):
if code >= 400 :
self.errmsg = fp.read()
raise urllib2.httperror(req.get_full_url(), code, msg, hdrs, fp)
'''
urllib2 post request: eg. uploadfile
'''
def sendmultipartpost(url, params, files):
#params like this :{'type':'upload','id':'xxxx'}
#files like this: {'file':'c:/xxxx.txt'}
posterparams = []
for key in params:
value = params[key]
try:
posterparams.append(poster.encode.multipartparam(key, value))
except exception, e:
print e, key, value
raise e
for key in files:
value = files[key]
try:
value = value.encode(sys.getfilesystemencoding())
posterparams.append(poster.encode.multipartparam.from_file(key, value))
except exception, e:
print e, key, value
raise e
try:
datagen, headers = poster.encode.multipart_encode(posterparams)
except exception, e:
print e, key, value
raise e
if headers is none:
headers = {}
try:
request = urllib2.request(url, datagen, headers)
request.add_header('accept-encoding', 'gzip')
request.add_header("accept", "*/*")
# print request
# print request.get_data()
opener,err = geturllib2(true, false)
response = opener.open(request)
except exception, e:
print e, url, files
print err.geterrormsg()
raise e
data = response.read()
'''
data = response.read(16*1024)
length = len(data)
_data = none
while length:
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()
return data
def geturllib2(upload = false, redirect = false):
if upload:
handlers = poster.streaminghttp.get_handlers()
else:
handlers = []
err = httperror()
handlers.append(err)
handlers.append(getcookie())
try:
opener = urllib2.build_opener(*handlers)
except exception, e:
print err.geterrormsg()
raise e
return opener,err
def getcookie():
global _cookieprocessor
cookiefile = "./cookies.txt"
try:
httpcookie = cookielib.mozillacookiejar(cookiefile)
httpcookie.load(ignore_discard=true, ignore_expires=true)
httpcookie = urllib2.httpcookieprocessor(httpcookie)
except exception, e:
print e
httpcookie = _cookieprocessor
# _cookieprocessor = urllib2.httpcookieprocessor(cookielib.cookiejar())
return httpcookie
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |