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了。常用于登录。
基本的使用方法与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)
浙公网安备 33010602011771号