Python3中利用Urllib进行表单数据提交(Get,Post)

本文介绍了如何在Python3中利用Urllib库进行表单数据的Get和Post提交,特别是在处理需要验证session的网站时。作者在尝试了多种方法后,选择了使用urllib,因为其熟悉且能满足需求。文中并未涉及多线程下载的具体实现,但提到了之前已有的相关文章。此外,文章还提及了其他可能的解决方案,如http.client库。

最近做一个项目,由于有尽万张图片要下载,所以自然就想到写一个多线程的文件下载类,但是写好后又发现网站是会验证你的session的,没有登录显然是无法直接下载的
我在网上看了一下资料,基本上几种:
1.调用IE控件,进行数据提交
2.使用python3的http.client
3.使用urllib

我的博客:http://www.paulwangblog.com/

 

之前写过一个spider,所以我还是继续用比较熟悉的urllib了(http.client在python的文档中也有介绍,不过我试了一下没有成功,也就没有继续研究了,相信应该也是可以的)

 

下面给出实现代码,多线程下载类之前的文章已经有了介绍,就不再写了

'''
Created on 2011-11-11

@author: PaulWang

Description:
'''
#import urllib.request,urllib.parse
#
#import http.client
#
#params = urllib.parse.urlencode({'@email': '112233@gmail.com', '@password': '1212123', '@action': 'https://system.netsuite.com/app/login/nllogin.nl'})
#headers = {"Content-type": "application/x-www-form-urlencoded"}
#
#
#conn = http.client.HTTPConnection("www.netsuite.com")
#conn.request("POST", "",params,headers)
#r1 = conn.getresponse()
#print(r1.status, r1.reason)
#data = r1.read()
#print(data)
#conn.close()

import urllib
import sys
import http.cookiejar
import MutiThreadDown

cookie = http.cookiejar.CookieJar()                                        #保存cookie,为登录后访问其它页面做准备
cjhdr  =  urllib.request.HTTPCookieProcessor(cookie)             
opener = urllib.request.build_opener(cjhdr)


url = "https://system.netsuite.com/pages/customerlogin.jsp?country=US"
postdata = urllib.parse.urlencode({'email': 'yicui49@gmail.com', 'password': 'fashlets123', 'Submit':''})
postdata = postdata.encode('utf-8')

res = urllib.request.urlopen(url,postdata)
print(res.status, res.reason)

if( res.status != 200 ):
    exit()

print('ok')

url = "https://system.netsuite.com/core/media/media.nl?id=32486&c=776164&h=686103757f3df97d4a92"
output = '1234567.jpg'

MutiThreadDown.download( url, output, blocks=1, proxies={} )#自己封装的下载类




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值