requests模块简介 (二)

1.requests 下载图片

request请求返回的response的content返回的是bytes型也就是二进制的数据。

如果我们知道图片的url,通过向图片url发起请求,就能获取图片的二进制数据,然后写入文件即可获得图片。

图片url为:https://images.cnblogs.com/cnblogs_com/blogs/788912/galleries/2298500/o_230411073238_%E4%B8%AD.png

import requests
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}

url = "https://images.cnblogs.com/cnblogs_com/blogs/788912/galleries/2298500/o_230411073238_%E4%B8%AD.png"
resp = requests.get(url, headers=headers)
with open('test.png', 'wb') as f:  # 二进制方式写入文件
    f.write(resp.content)       # 写入图片

上述代码执行后,当前目录即多出test.png图片文件

2.requests 发送post请求

方式如下:

requests.post(url,data=None)
import requests, json

# 百度翻译url  中译英
url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'

# 请求头
headers = {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Acs-Token": '填入token',
    "Connection": "keep-alive",
    "Content-Length": "149",
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    "Cookie": '填入cookie',
    "Host": "fanyi.baidu.com",
    "Origin": "https://fanyi.baidu.com",
    "Referer": "填入",
    "sec-ch-ua": '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "Windows",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest"
}

# post请求数据
params = {
    "from": "zh",
    "to": "en",
    "query": "你好",
    "transtype": "realtime",
    "simple_means_flag": "3",
    "sign": "232427.485594",
    "token": "7614c396a3a9927725443096dc7f491f",
    "domain": "common"
}

resp = requests.post(url, headers=headers, data=params)
if resp.status_code == 200:
    resp_data = json.loads(resp.text)
    print(resp_data['trans_result']['data'][0]['dst'])  # how do you do

 

3.session

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

登陆逻辑:

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

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

import requests

session = requests.session()
url = "https://passport.17k.com/ck/user/login"  # 登录url
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
}
data = {
    "loginName": "用户名",
    "password": "密码"
}
session.headers = headers  # 添加请求头,直接session.headers = 请求头 即可
resp = session.post(url, data=data)     # session请求登录

response = session.get("https://www.17k.com/top/")  # session方式发起get请求返回response对象,返回的数据是登录状态请求时返回的数据
print(response.text)

 

posted on 2023-04-11 16:05  木去  阅读(79)  评论(0)    收藏  举报