import requests
# response = requests.get('http://www.baodu.com') #获取
# print(type(response)) #打印类型
# print(response.status_code)#打印状态码
# print(response.cookies)#打印缓存
# print(response.text)
# ###各种请求方式
# requests.post('https://httpbin.org/post')
# requests.put('http://httpbin.org/put')
# requests.delete('http://httpbin.org/delete')
# requests.head('http://httpbin.org/get')
# requests.options('http://httpbin.org/get')
###基本get请求params对应data
#response = requests.get('http://httpbin.org/get')
# data = {
# 'name':"yanglong",
# 'age':29
# }
# response = requests.get('http://httpbin.org/get',params=data) #以字典的形式传递给params
# #response = requests.get('http://httpbin.org/get?name=yanglong&age=29')
# print(response.text)
###解析json
# import requests
# import json #导入库,json是轻量级的数据交换格式,全名JAVAscript object Notaiton.是标记符的序列,包含
#六个构造字符、字符串、数字、和三个字面名。json是序列化的对象或数组
# response = requests.get('http://httpbin.org/get')
# print(type(response))
# print(response.status_code)
# print(response.text)
# print(response.json())
print(json.loads(response.text)) #json格式下载与response.json()结果是相同的。
# print(type(response.json()))
####获取二进制数据
# import requests
# response = requests.get('https://vd2.bdstatic.com/mda-mjacpyhix1fyaycj/cae_h264_nowatermark/1633943433694054279/mda-mjacpyhix1fyaycj.mp4')
# with open('E:python file网页爬取学习java.mp4','wb') as f:
# f.write(response.content)
# f.close()
# print(response.content)
# print(response.text)
# print(type(response.content))
# ##添加headers
# import requests
# headers = {
# 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
# }
# response = requests.get('https://www.zhihu.com/explore',headers=headers)
# # print(response.text)
# #####基本POST请求data对应data
# import requests
# data = {
# 'name':'yanglong',
# 'age':29
# }
# headers ={
# 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
# }
# response = requests.post('http://httpbin.org/post',data=data,headers=headers)
# print(type(response.json))
# print(response.json())
# ##########响应response
# import requests
# response = requests.get('http://www.jianshu.com')
# print(type(response.status_code),response.status_code)
# print(response.headers)
# print(type(response.cookies),response.cookies)
# print(type(response.url),response.url)
# print(type(response.history),response.history)
#######状态码判断
# import requests
# response = requests.get('http://www.baidu.com')
# # #exit()if not response.status_code == requests.codes.not_found else print('404 not found')
# # exit()if not response.status_code == 200 else print('requests sucessfully')
# # ######高级操作
# #文件上传
# import requests
# files = {'file':open('java.mp4','rb')} #定义文件,打开文件,上传。
# response = requests.post('http://httpbin.org/post',files=files)
# print(response.text)
# print(response.json())
#
# # ####获取cookie
# # import requests
# # response = requests.get('http://www.baidu.com')
# # print(response.cookies)
# # for key,value in response.cookies.items(): #items 项目
# # print(key + "=" + value)
# ##会话保持,模拟登录,
# import requests
# s = requests.Session()
# s.get('http://httpbin.org/cookies/set/number/12345678')
# response = s.get('http://httpbin.org/cookies')
# print(response.text)
# ###证书验证
# import requests
# from requests.packages import urllib3
# urllib3.disable_warnings() #关闭warn告警信息
# #response = requests.get('https://12306.cn') #提示SSL错误,验证
# response = requests.get('https://www.12306.cn',verify=False) #访问成功,出现warning信息
# #response = requests.get('https://www.12306.cn',cert=('/path/server.crt','/path/key')) #指定证书路径,主机无证书。
# print(response.status_code) #打印状态码
######代理学习
###超时设置
import requests
from requests.exceptions import ReadTimeout,HTTPError,RequestException #请求异常库导入readtimeout
try:
response = requests.get('http://httpbin.org/get',timeout=0.1) #设置为0.1秒报错。
print(response.status_code)
except ReadTimeout:
print('Timeout')
except HTTPError:
print('Httperror')
except RequestException:
print("Error")