urllib,urllib2,requests对比

  1 #coding:utf-8
  2 import urllib2
  3 import urllib
  4 import httplib
  5 import socket
  6 import requests
  7 
  8 #实现以下几个方面内容:
  9 ##get请求,post请求
 10 ##请求参数自定义(querystring 针对get,form针对post,cookie,header)
 11 ##返回内容格式
 12 ##实现代理
 13 def testforurllib():
 14     r=urllib.urlopen('http://www.baidu.com')
 15     #返回的内容
 16     r.readline()
 17     r.read()
 18     r.info()
 19     r.getcode()
 20     r.geturl()
 21     #get 加参数
 22     params=urllib.urlencode({'name':'yy','age':22})#结果:name=yy$age=22
 23     r1=urllib.urlopen('http://www.baidu.com?%s'%params)
 24     #post 加参数
 25     r2=urllib.urlopen('http://www.baidu.com',params)
 26     print(r2.getcode())
 27     #代理
 28     proxies = {'http': 'http://127.0.0.1:7070/'}
 29     opener=urllib.FancyURLopener(proxies)
 30     opener.open('http://www.baidu.com')
 31     print(opener.getcode())
 32     #cookie实现比较没找到好的方法
 33     pass
 34 def testforurllib2():
 35     #代理
 36     proxy=urllib2.ProxyHandler({'http':'http://127.0.0.1:7070'})
 37     opener=urllib2.build_opener(proxy)
 38     #局部
 39     opener.open('http://baidu.com')
 40     ##全局
 41     urllib2.install_opener(opener)
 42     urllib2.urlopen('bakdu.com')
 43     
 44     #get
 45     urllib2.urlopen('http://cnblogs.com?%s'%urllib.urlencode({'page':2}))
 46     #post
 47     urllib2.urlopen('http://cnblogs.com',urllib.urlencode({'page':2}))
 48     
 49     #cookie
 50     import cookielib
 51     cj=cookielib.CookieJar()
 52     opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
 53     r=opener.open('http://weibo.com')
 54     print(r.info())
 55     #定制http头
 56     r=urllib2.Request('http://cnblogs.com')
 57     r.add_header('user-agent','xxx')
 58     response=urllib2.urlopen(r)
 59     pass
 60 def testforhttplib():
 61     #urllib是对httplib的封装,如果没有更精细的控制,使用urllib即可
 62     #http://www.cnblogs.com/qq78292959/archive/2013/04/01/2993133.html
 63     url='http://cnblogs.com'
 64     params={'page':1}
 65     
 66 def testforrequests():
 67     #这个api设置更爽
 68     url='http://www.baidu.com'
 69     params={'page':1}
 70     r=requests.get(url)
 71     r1=requests.post('http://httpbin.org/post')
 72     #同理有put,delete,head,options
 73     #添加参数
 74     r3=requests.get(url,params=params)
 75 
 76     #获取响应
 77     r4=requests.get('https://github.com/timeline.json')
 78     print(r4.text+r4.encoding+str(r4.raw))
 79 
 80     #添加post的data数据
 81     import json
 82     r5=requests.post('http://baidu.com',data={'page':1})
 83     print(r5.status_code)
 84 
 85     #添加http头
 86     headers={'a':'a'}
 87     r6=requests.post('http://baidu.com',headers=headers)
 88     print(r6.headers)
 89 
 90     #添加cookie
 91     c=dict(a='a')
 92     r7=requests.get('http://baidu.com',cookies=c)
 93     print(len(r7.cookies))
 94 
 95     #响应内容
 96     r7.text
 97     r7.content
 98     r7.json()
 99     r7.raw
100 
101     r7.status_code
102     r7.headers
103     r7.cookie['key']
104     r7.history
105     pass
106 
107 
108 def main():
109     testforrequests()
110     pass
111 
112 
113 main()
View Code

综上所述还是requests的api更好理解,使用起来也更简洁。

posted @ 2015-04-21 14:58  cncyber  阅读(841)  评论(0编辑  收藏  举报