1.实现一个完整的请求和响应模型
#coding=GBK
#实现一个完整的请求和响应模型
import requests
'''
r = requests.get('http://www.baidu.com')
print r.content
'''
#GET请求
'''
postdata = {'key':'value'}
r = requests.post('http://www.baidu.com/login',data=postdata)
print r.content
'''
#POST请求
payload = {'Keywords':'blog:qiyeboy','pageindex':1}
r = requests.get('http://zzk.cnblogs.com/s/blogpost',params=payload)
print r.url
#conding=GBK #响应与编码
#coding=GBK #请求头headers处理 import requests user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5;Windows NT)' headers = {'User_Agent':user_agent} r = requests.get('http://www.baidu.com',headers=headers) print r.content
import requestsimport chardet'''r = requests.get('http://www.baidu.com')print 'content--->' + r.contentprint 'text--->' + r.textprint 'encoding-->'+r.encodingr.encoding='utf-8'print 'new text-->'+r.text''''''r = requests.get('http://www.baidu.com')print chardet.detect(r.content)r.encoding = chardet.detect(r.content)['encoding'] print r.text'''#注意:修改编码形式,从检测编码中提取编码形式,赋给r.encoding实现解码,该模式为全部响应模式r = requests.get('http://www.baidu.com',stream=True)print r.raw.read(10)#设置 stream=Ture标志位,使响应字节以字节流方式进行读取,r.raw.read函数制定读取的字节数3.请求头headers 处理
与前文urllib2/urllib实现类似#coding=GBK #请求头headers处理 import requests user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5;Windows NT)' headers = {'User_Agent':user_agent} r = requests.get('http://www.baidu.com',headers=headers) print r.content
4.响应码code和响应头headers处理
#coding=GBK #响应码code和响应头headers处理 import requests r = requests.get('http://www.baidu.com') if r.status_code==requests.codes.ok: print r.status_code #响应码 print r.headers #响应头 print r.headers.get('content-type')#推荐使用这种获取方式,获取其中某个字段 else: r.raise_for_status()#用来主动产生异常,当响应码是4xx,5xx时,该函数会抛出异常,当响应码为200时,会返回None
5.Cookis处理
#coding=GBK #Cookies的处理 import requests ''' user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5;Windows NT)' headers = {'User_Agent':user_agent} r = requests.get('http://www.baidu.com',headers=headers) #遍历出所有Cookie字段的值 for cookie in r.cookies.keys(): print cookie + ':' + r.cookies.get(cookie) ''' ''' user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5;Windows NT)' headers = {'User_Agent':user_agent} cookies = dict(name='qiye',age='10') #自定义cookies值发送 r = requests.get('http://www.baidu.com',headers=headers,cookies=cookies) print r.text ''' loginUrl = 'http://www.baidu.com/login' s = requests.Session() #首先访问登录界面,作为游客,服务器会先分配一个cookie r = s.get(loginUrl,allow_redirects=True) datas = {'name':'qiye','password':'qiye'} #向登陆链接发送post请求,验证成功,游客权限会转为会员权限 r = s.post(loginUrl,data=datas,allow_redirects=True) print r.text #流程为:第一次访问页面,创建cookie,第二次访问,自动将cookie带上 进行访问
6.重定向与历史信息
处理重定向 只需要设置 allow_redirects字段,例如 r=requests('',allow_redirects=True),允许重定向#coding=GBK #重定向与历史信息 import requests r = requests.get('http://www.baidu.com') print r.url print r.status_code print r.history
在允许情况下 通过 r.history查看 访问成功之前的所有跳转信息
7.超时设置
requests.get('http://www.baidu.com',timeout=2)
8.proxy设置import requests proxies={ "http":"http://xxxxx", "https":"https://xxxxx" } requests.get('http://xxxxx',proxies=proxies)