美文网首页Pyhton
Python之Request

Python之Request

作者: HeloWxl | 来源:发表于2019-10-20 13:51 被阅读0次

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)

相关文章

网友评论

    本文标题:Python之Request

    本文链接:https://www.haomeiwen.com/subject/pjzomctx.html