requests库详解

  1 import requests
  2 
  3 #实例引入
  4 # response = requests.get('http://www.baidu.com')
  5 # print(type(response))
  6 # print(response.status_code)
  7 # print(type(response.text))
  8 # print(response.text)
  9 # print(response.cookies)
 10 #
 11 # #各种请求方式
 12 # a = requests.post('http://httpbin.org/post')
 13 # b = requests.put('http://httpbin.org/put')
 14 # requests.delete('http://httpbin.org/delete')
 15 # requests.head('http://httpbin.org/get')
 16 # requests.options('http://httpbin.org/get')
 17 # print(a.text)
 18 
 19 #请求
 20 #基本GET请求
 21 #基本写法
 22 # response = requests.get('http://httpbin.org/get')
 23 # print(response.text)
 24 # #带参数GET请求
 25 # response = requests.get('http://httpbin.org/get?name=gemmey&age=22')
 26 # print(response.text)
 27 #
 28 # data = {
 29 #     'name':'gemmey',
 30 #     'age':22
 31 # }
 32 # response = requests.get('http://httpbin.org/get',params=data)
 33 # print(response.text)
 34 #
 35 # #解析Json
 36 # import json
 37 # response = requests.get('http://httpbin.org/get')
 38 # print(type(response.text))
 39 # print(response.json())#执行了json.loads()操作
 40 # print(json.loads(response.text))
 41 # print(type(response.json()))
 42 
 43 #获取二进制数据(图片、视频等)
 44 # response = requests.get('http://github.com/favicon.ico')
 45 # print(type(response.text),type(response.content))
 46 # print(response.text)
 47 # print(response.content)
 48 # with open('favicon.ico','wb') as f:
 49 #     f.write(response.content)
 50 
 51 #添加Headers
 52 #不加headers会被屏蔽
 53 # headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
 54 # response = requests.get('https://www.zhihu.com/explore',headers=headers)
 55 # #response.encoding = 'utf-8'
 56 # print(response.text)
 57 
 58 #基本POST请求
 59 
 60 #form表单提交
 61 # data = {'name':'germey','age':22}
 62 # response = requests.post('http://httpbin.org/post',data=data)
 63 # print(response.text)
 64 # #加个headers
 65 # data = {'name':'germey','age':22}
 66 # headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
 67 # response = requests.post('http://httpbin.org/post',data=data,headers=headers)
 68 # print(response.json())
 69 
 70 #响应
 71 
 72 #response的属性
 73 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
 74 # response = requests.get('http://www.jianshu.com',headers=headers)
 75 # print(type(response.status_code),response.status_code)
 76 # print(type(response.headers),response.headers)
 77 # print(type(response.cookies),response.cookies)
 78 # print(type(response.url),response.url)
 79 # print(type(response.history),response.history)
 80 
 81 #状态码判断
 82 # response = requests.get('http://www.jianshu.com',headers = headers)
 83 # exit() if not response.status_code==requests.codes.ok else print('Request Successfilly')
 84 # response = requests.get('http://www.jianshu.com',headers = headers)
 85 # exit() if not response.status_code==200 else print('Request Successfilly')
 86 #
 87 # #高级操作
 88 # #文件上传
 89 # files = {'file':open('favicon.ico','rb')}
 90 # response = requests.post('http://httpbin.org/post',files=files)
 91 # print(response.text)
 92 
 93 #获取cookie
 94 # response = requests.get('http://baidu.com')
 95 # print(response.cookies)
 96 # for key,value in response.cookies.items():
 97 #     print(key + '=' + value)
 98 
 99 #会话维持
100 #模拟登录
101 # requests.get('http://httpbin.org/cookies/set/number/123456789')
102 # response = requests.get('http://httpbin.org/cookies')
103 # print(response.text)
104 # '''
105 # {
106 #   "cookies": {}
107 # }
108 # 相当于用两个浏览器分别访问
109 # '''
110 # #实例化Session对象,相当于一个浏览器访问
111 # s = requests.Session()
112 # s.get('http://httpbin.org/cookies/set/number/123456789')
113 # response = s.get('http://httpbin.org/cookies')
114 # print(response.text)
115 
116 #证书验证
117 #SSL提示的错误,访问HTTPS它首先验证证书,如果证书不合法会报错;是否进行证书验证verify
118 # from requests.packages import urllib3
119 # urllib3.disable_warnings()#消除警告信息
120 # response = requests.get('https://www.12306.cn',verify=False)
121 # print(response.status_code)
122 
123 #手动指定证书
124 #本地没有证书
125 # response = requests.get('https://www.12306.cn',cert=('/path/server.crt','/path/key'))
126 # print(response.status_code)
127 
128 #代理设置
129 #我这两个代理失效了
130 # proxies = {
131 #     'http':'http://127.0.0.1:9743',
132 #     'https':'https://127.0.0.1:9743',
133 # }
134 # response = requests.get('https://www.taobao.com',proxies=proxies)
135 # print(response.status_code)
136 #代理有用户名和密码
137 # proxies = {
138 #     'http':'http://user:password@127.0.0.1:9743/',
139 # }
140 # response = requests.get('https://www.taobao.com',proxies=proxies)
141 # print(response.status_code)
142 
143 #超时设置
144 # from requests.exceptions import ReadTimeout
145 # try:
146 #     response = requests.get('https://httpbin.org/get',timeout=0.5)
147 #     print(response.status_code)
148 # except ReadTimeout:
149 #     print('TimeOut')
150 
151 #认证设置,需要用户名密码
152 # from requests.auth import HTTPBasicAuth
153 #
154 # r = requests.get('http://120.27.34.24:9001',auth=HTTPBasicAuth('user','123'))
155 # print(r.status_code)
156 
157 #异常处理
158 from requests.exceptions import ReadTimeout,HTTPError,RequestException,ConnectionError
159 
160 try:
161     response = requests.get('http://httpbin.org/get',timeout=0.1)
162     print(response.status_code)
163 except ReadTimeout:
164     print('Timeout')
165 except ConnectionError:
166     print('Connect error')
167 except HTTPError:
168     print('Http error')
169 except RequestException:
170     print('Error')

 

posted @ 2018-10-26 11:35  X18301096  阅读(278)  评论(0编辑  收藏  举报