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

来源:互联网 发布:ubuntu高开发 编辑:程序博客网 时间:2024/06/01 10:53

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

分类: python 5883人阅读 评论(1) 收藏 举报
python多线程outputurlemailsession

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

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

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

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

[python] view plaincopy
  1. ''''' 
  2. Created on 2011-11-11 
  3.  
  4. @author: PaulWang 
  5.  
  6. Description: 
  7. '''  
  8. #import urllib.request,urllib.parse  
  9. #  
  10. #import http.client  
  11. #  
  12. #params = urllib.parse.urlencode({'@email': '112233@gmail.com', '@password': '1212123', '@action': 'https://system.netsuite.com/app/login/nllogin.nl'})  
  13. #headers = {"Content-type": "application/x-www-form-urlencoded"}  
  14. #  
  15. #  
  16. #conn = http.client.HTTPConnection("www.netsuite.com")  
  17. #conn.request("POST", "",params,headers)  
  18. #r1 = conn.getresponse()  
  19. #print(r1.status, r1.reason)  
  20. #data = r1.read()  
  21. #print(data)  
  22. #conn.close()  
  23.   
  24. import urllib  
  25. import sys  
  26. import http.cookiejar  
  27. import MutiThreadDown  
  28.   
  29. cookie = http.cookiejar.CookieJar()                                        #保存cookie,为登录后访问其它页面做准备  
  30. cjhdr  =  urllib.request.HTTPCookieProcessor(cookie)               
  31. opener = urllib.request.build_opener(cjhdr)  
  32.   
  33.   
  34. url = "https://system.netsuite.com/pages/customerlogin.jsp?country=US"  
  35. postdata = urllib.parse.urlencode({'email''yicui49@gmail.com''password''fashlets123''Submit':''})  
  36. postdata = postdata.encode('utf-8')  
  37.   
  38. res = urllib.request.urlopen(url,postdata)  
  39. print(res.status, res.reason)  
  40.   
  41. if( res.status != 200 ):  
  42.     exit()  
  43.   
  44. print('ok')  
  45.   
  46. url = "https://system.netsuite.com/core/media/media.nl?id=32486&c=776164&h=686103757f3df97d4a92"  
  47. output = '1234567.jpg'  
  48.   
  49. MutiThreadDown.download( url, output, blocks=1, proxies={} )#自己封装的下载类  

0 0