Python3中利用Urllib进行表单数据提交(Get,Post)
2011-11-12 16:33
851 查看
最近做一个项目,由于有尽万张图片要下载,所以自然就想到写一个多线程的文件下载类,但是写好后又发现网站是会验证你的session的,没有登录显然是无法直接下载的
我在网上看了一下资料,基本上几种:
1.调用IE控件,进行数据提交
2.使用python3的http.client
3.使用urllib
我的博客:http://www.paulwangblog.com/
之前写过一个spider,所以我还是继续用比较熟悉的urllib了(http.client在python的文档中也有介绍,不过我试了一下没有成功,也就没有继续研究了,相信应该也是可以的)
下面给出实现代码,多线程下载类之前的文章已经有了介绍,就不再写了
我在网上看了一下资料,基本上几种:
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={} )#自己封装的下载类
相关文章推荐
- Python3中利用Urllib进行表单数据提交(Get,Post)
- Python3中利用Urllib进行表单数据提交(Get,Post)
- android利用httpclient实现post、get请求restful接口进行json和form表单数据提交等公共方法类
- python httplib post 进行表单提交数据
- Android 使用Post与Get方法进行表单提交数据
- C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
- 表单提交中Get和Post方式的区别及EncType表明提交数据的格式详解
- 表单提交数据get请求和post请求的区别?
- 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成
- android利用get提交数据到服务器进行验证
- Android OkHttp3(完美封装)Get异步获取数据、Post异步获取数据、Form表单提交、文件下载
- C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
- 20110215 学习记录2:表单中的get和post区别 & 使用 HttpWebRequest 向网站提交数据
- Android 使用三种方式获取网页(通过Post,Get进行表单的提交)
- C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
- HTML中表单提交数据GET、POST的区别
- Python使用post及get方式提交数据
- 关于http get和form表单post提交数据大小限制
- HTML中表单提交数据GET、POST的区别