中易网

怎样用python模拟表单post

答案:2  悬赏:20  
解决时间 2021-03-14 19:21
这是从qq空间里找的

最佳答案
简答:
需要你自己去(用工具)分析网页在post时候都发送了哪些参数和值,然后再用程序去模拟。

详解:
我写的,算是史上最全的了,自己看吧:
如何用Python,C#等语言去实现抓取静态网页 模拟登陆网站

(此处不能贴地址,请自己用google搜标题,即可找到帖子地址)
全部回答
发个以前用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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
具体表现是什么意思?
求一个情侣名,女孩用的是 浅黛微妆 。那么男
云商之家我想知道这个在什么地方
已知二次函数y=ax 2 +bx+c(a,b,c均为实数
什么浓度的84消毒液洗手杀菌效果最好
寄快递到美国
word2003怎么打开
烃,苯,苯的同系物,CCl4,醇,水,液溴,等
一些工商题目
胡阿仑寿司地址有知道的么?有点事想过去
四川眉山可以种红美人柑橘吗,也就是爱媛28号
really she beautiful is (.)连词成句
看看这个日志可信吗?
关于脑卒中偏瘫与脑损伤的关系?
这是多少电费?多少钱。一元一度?
推荐资讯
说长方体和正方体同样可以借长乘宽乘高,怎么
电缆款16万开的是国税普通发票,电缆未完工
找本言情小说 男主是皇帝女主是皇后 男主是女
探险家的舞蹈为什么要用凉宫春日的忧郁的舞蹈
织田信长VS今川义元(桶狭间之战)兵力对比是多
关于该派克钢笔的型号和价值!笔舌部分,有个
施工许可证如何办理?
怎么才能将屏摹上的字缩小
遵义市第二十一中学地址在哪,我要去那里办事
“你好,陡峭的悬崖!深深的峡谷衬托着你挺拔
麦纳健身这个地址在什么地方,我要处理点事
金释界地址在哪,我要去那里办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?