乐之之

知而行乐,乐而行之,天道酬勤,学无止境。
requests进阶

一、图片下载

  • 下载图片,需获取到图片的url地址和图片名称,通过向图片url发起请求,之后获取.content
  • 注意:
  1. .text返回的是Unicode型的数据。
  2. .content返回的是bytes型也就是二进制的数据。
import requests
url = “https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png”
response = requests.get(url).content

with open("图片"+".png","wb") as f:
    f.write(response)

二、post请求

方法:

requests.post(url,data=None)

POST请求发送Form表单数据

  • 以表单的形式发送post请求
  • 注意:非必要不写入自己的cookie!
import requests
url = "https://httpbin.org/post"
data = {"json_style":"json_data"}
resp = requests.post(url,json=data)
print(resp.text)

# 结果
"json": null, 

 json

  • json.loads()

  将json字符串转化为python类型

  • json.dumps()

  将python类型转化为json字符串

三、session

  • session方法是requests库发起请求的一种方法,这种方法会自动保存访问页面得到的cookie值,从而再次访问的时候会自动携带cookie,使得操作cookie方便,不需要我们自己添加cookie了。常用于登录。

登录逻辑:

  功能:自动更新请求头信息,常用在账号登录的时候,先访问登录页url,再访问数据提交的url。

session的使用

基本的使用方法与requests.get 相似,使用的session的时候需要先创建session对象。

session = requests.session()#创建session对象
session.headers=headers#添加请求头
res_ss=session.post(url_login)

如何模拟登录:

  • 先创建一个pwd.ini的文件。
  • 写入账号密码

  • 导入模块
from configparser import ConfigParser
  • 创建ConfigParser对象

cfg = ConfigParser()
r = cfg.read("pwd.ini")
username = cfg.get("username","username")
password = cfg.get("password","password")
print(username,password)
  •  把账号密码写进post请求里即可
post_url = "https://passport.17k.com/ck/user/login"
post_data = {
    "loginName": username,
    "password": password
}

# 创建一个session对象
session = requests.session()
# 使用创建的session对象发送请求
resp = session.post(post_url,data=post_data)
print(resp.text)

完整代码示例:

import requests
from configparser import ConfigParser
# 创建ConfigParser对象
cfg = ConfigParser()
r = cfg.read("pwd.ini")
username = cfg.get("username","username")
password = cfg.get("password","password")
print(username,password)



post_url = "https://passport.17k.com/ck/user/login"
post_data = {
    "loginName": username,
    "password": password
}

# 创建一个session对象
session = requests.session()
# 使用创建的session对象发送请求
resp = session.post(post_url,data=post_data)
print(resp.text)

 

posted on 2022-10-27 22:22  乐之之  阅读(35)  评论(0编辑  收藏  举报