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')