response对象
import requests
'''
当我们向网站发出请求的时候,网站会做出相应的响应---response对象
'''
url = "https://www.baidu.com/s?ie=UTF-8&wd=python"
#以get请求为例
r = requests.get(url)
#响应状态码
print(r.status_code)
#原始的响应体
print(r.raw)
#字节方式的响应体 需要进行解码
print(r.content)
#字符串方式的响应体 会自动根据响应头部的字符编码进行解码
print(r.text)
#以字典对象存储服务器的头部,但是这个字典的话,比较特殊,字典键不区分大小写,若键不存在,则返回None
print(r.headers)
#Request中内置的JSON解码器
# print(r.json())
#请求失败(非200响应),抛出异常
print(r.raise_for_status())
#获取请求链接
print(r.url)
#获取请求后的cookies
print(r.cookies)
#获取编码格式
print(r.encoding)
Get方式
import requests
'''
Ger 请求 两种请求方式:
带有参数和不带参数的那种
'''
#第一种方式
url1 = "https://www.baidu.com/s?ie=UTF-8&wd=python"
r1 = requests.get(url1)
print(r1.url)
#第二种方式
url2 = "https://www.baidu.com/s"
params = {'wd':'python'}
r2 = requests.get(url2,params=params)
print(r2.url)
Post方式
import requests
'''
post 请求参数需要设置请求参数data,数据格式可以为 字典、元祖、列表和json格式
'''
#字典类型
dict_data={
"key1":"value1",
"key2":"value2"
}
#元祖类型
tuple_data = (
('key1','value1'),
('key2','value2')
)
import json
data={
"key1":"value1",
"key2":"value2"
}
json_data = json.dumps(data)
#发送POST请求 --示例 真正发送请求的时候,是错误的
r = requests.post("https://www.baidu.com/",data=json_data)
复杂的请求
1.headers
#1.添加请求头部信息 ,请求头以字典的形式生成,然后发送请求中设置headers参数,指向已经定义好的请求头
headers ={
"content-type":"application/json",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
}
r = requests.get(url,headers=headers)
print(r.status_code)
print(r.text)
2.使用代理IP
proxies = {
"http":"http://10.10.1.10:3128",
"http":"http://10.10.1.10:1080"
}
r2 = requests.get(url,proxies=proxies)
print(r2.status_code)
print(r2.text)
3.证书验证
# 3.证书验证
certificateVerification_url = "https://kyfw.12306.cn/otn/leftTicket/init/"
resp = requests.get(certificateVerification_url)
print(resp.status_code)#200
# 关闭证书验证
resp = requests.get(certificateVerification_url,verify=False)
print(resp.status_code)
'''
控制台输出信息:
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.
See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
resp = requests.get(certificateVerification_url,verify=True)
print(resp.status_code)#200
'''
# 设置证书所在路径
resp = requests.get(certificateVerification_url,verify='/path/to/certfile')
4.使用cookies
cookie_dict = {}
temp_cookies = 'BAIDUID=9FAC64CB3DCC75A85D7E94095C1B3A94:FG=1; BIDUPSID=9FAC64CB3DCC75A85D7E94095C1B3A94; PSTM=1571242885; BD_UPN=123253; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1422_21089_29568_29221_22160; delPer=0; BD_CK_SAM=1; PSINO=6; COOKIE_SESSION=1748_0_9_8_31_56_1_4_8_6_0_0_0_0_0_0_1571540923_0_1571543163%7C9%230_0_1571543163%7C1; BD_HOME=0; H_PS_645EC=27fbzaxaFUuynJEk7%2B1OeVZo02HcDuSLvysQTv6pjpNL6LxThq9043oWT%2F8; BDSVRTM=0'
for i in temp_cookies.split(';'):
value = i.split('=')
cookie_dict[value[0]] = value[1]
resp = requests.get("https://www.baidu.com/s?ie=UTF-8&wd=12306",cookies = cookie_dict)
print(resp.text)
print(resp.status_code)
网友评论