Python requests

  • 添加 HTTP请求头
  • 抓取二进制文件
  • 上传文件
  • 设置Cookie
  • 设置同一个会话(Session)
  • 使用代理

添加 HTTP请求头

需要设置 get方法的headers参数.该参数是一个字典类型的值,每一对key-value 就是一个 Cookie。如果要设置中文,需要使用相关的函数进行编码与解码,不过比urllib 和 urllib3 方便多了。

  • quote :负责编码
  • unqoute :负责解码

例子:

import  requests
from urllib.parse import quote,unquote
# 写请求头
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',# 将中文编码'name' :quote('李宁')
}
# 发送请求
r = requests.get('http://httpbin.org/get',headers = headers)
# 输出响应体
print(r.text)
# 输出name 请求头的值(需要解码)
print('Name: ',unquote(r.json()['headers']['Name']))

ps:

请求头中的键在响应体中,总是第一个英文字母大写。不管你在代码里写是什么样的。

如:

'name' :quote('李宁')
# 变成
Name :李宁'NaMe' :quote('李宁')
# 也是变成
Name :李宁

抓取二进制文件

一般获取二进制数据(图片、视频等),需要将数据保存到本地文件中。所以需要调用 Response.content 属性获得bytes形式的数据。

代码:

上传文件

用requests上传文件也是相当简单的,只需指定post方法的files参数即可。files参数的值可以是Buffered Reader对象,该对象可以用Python语言的内置函数open返回。

代码:

import  requests
from urllib.parse import quote,unquote
# 写请求头
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',# 将中文编码# 'name' :quote('李宁')
}
# 发送请求
link = 'https://tse4-mm.cn.bing.net/th/id/OIP-C.a9A8bFqvNQ_iw7neprKWzwHaKH?w=206&h=282&c=7&o=5&dpr=1.25&pid=1.7'
r = requests.get(link,headers = headers)
print(r.text)
with open('图片1.png','wb') as f:f.write(r.content)
import  requests
# 定义上传的文件,字典中必须有一个key = file 的值,值类型是BfferedReader,可以用open函数返回
files1 = {'file':open('图片1.png','rb')}r1 = requests.post('http://127.0.0.1:5000/',files = files1)print(r1.text)

设置Cookie

使用requests 就简单得多,只需要使用cookies属性就可以得到服务端发送过来的Cookie。设置Cookie也相当简单。有如下2种方法设置Cookie,

  1. headers参数。
  2. cookies参数。

get和post方法都有这两个参数,如果使用cookies参数,需要创建Requestookiar对象,并使用set方法设置每一个Cookie。

在访问某些网站时,只有登录用户才能获得正常显示的内容,所以一般的做法是先在网页上登录。

通过Chrome浏览器的开发者工具得到登录后的Cookie(如图5-8所示),然后将这些Cookie复制,放到文件或直接写到程序中,当客户端请求这些网站时,再将这些Cookie发送给服务端、这样一来,尽管我们并不知道用户名和密码,但由于登录标识保存在Cookie中,所以给服务端发送了Cookie,
就相当于登录了。

最简单就是将Cookie 放到headers中

headers = {'Host':'csdn.net/?spm=1011.2124.3001.4476','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73','Cookie':'uuid_tt_dd=10_37481955370-1625655302106-686916; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_37481955370-1625655302106-686916!5744*1*qq_39838607......'
}

设置同一个会话(Session)

在requests 中提供了Session 对象,可以无须用户干预Cookie的情况下维持Session。通过Session对象的get、post等方法可以在同一个Session中向服务器发送请求。

代码:

import  requests#创建 Session 对象
session = requests.Session()
# 其中 set/name/Bill 相当于向服务器写入一个名为name 的Cookie
# 第一次发送请求
session.get('http://httpbin.org/cookies/set/name/Bill')
#第二次发送请求
r2 = session.get('http://httpbin.org/cookies')
print(r2.text)

使用代理

requests使用代理发送请求非常容易,只需指定proxies参数即可,该参数是一个字典类型的值,每一对 key−value表示一个代理的协议,如http、https等。

代码:

import  requestshesders = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Host':'jd.com'
}
proxies ={'http':'http://182.140.244.163:8118','https':'https://182.140.244.163:8118'
}link = 'https://www.jd.com'
r1 = requests.get(link,proxies = proxies,headers= hesders,verify=False)
print(r1.text)

Python requests 笔记(一)相关推荐

  1. Python学习笔记:requests库

    Python学习笔记:requests库 利用requests这个功能强大的网络请求库,可以像浏览器一样发送各种HTTP请求来获取网站的数据. 一.运行环境 1.系统版本:Windows 10 2.P ...

  2. Python学习笔记——爬虫原理与Requests数据抓取

    目录 为什么要做网络爬虫? 通用爬虫和聚焦爬虫 HTTP和HTTPS 客户端HTTP请求 请求方法 HTTP请求主要分为Get和Post两种方法 常用的请求报头 1. Host (主机和端口号) 2. ...

  3. python requests 示例_Python Requests模块的简单示例

    这篇文章主要为大家详细介绍了Python Requests模块的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  4. Python学习笔记:常用第三方模块(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:爬取网页图片

    Python学习笔记:爬取网页图片 上次我们利用requests与BeautifulSoup爬取了豆瓣<下町火箭>短评,这次我们来学习爬取网页图片. 比如想爬取下面这张网页的所有图片.网址 ...

  6. Python爬虫笔记

    Python爬虫笔记 总体看过程 赋予地址 获取网页信息 获取网页中所需的信息 将得到所需的信息保存到硬盘 总体看过程 爬虫-从网络上爬取所需要的信息,怎么爬取?首先得知道你要去哪里获取(即地址,首先 ...

  7. Python爬虫笔记(3)- 爬取丁香园留言

    Python爬虫笔记(3)- 爬取丁香园留言 爬取丁香园留言:主要用到了模拟登录 爬取丁香园留言:主要用到了模拟登录 import requests, json, re, random,time fr ...

  8. 前阿里大佬干货分享,0基础小白,转行必看Python学习笔记(七)

    Python学习笔记7 异常处理 包和模块 包和模块的一般操作 导入操作的本质 模块检索的路径 导入模块的场景 第三方包和模块的安装 异常处理 系统内部一开始已经内置了一些特定的错误场景,当我们触发了 ...

  9. PYTHON学习笔记之(一)2020.08

    PYTHON学习笔记之(一)2020.08 Python基础 数据类型 常见的列表.字典,以及元组.集合. 1 列表 list 1.1 列表转换字符串 stu = ['王一', '李二', '张三'] ...

最新文章

  1. Express中使用ejs新建项目以及ejs中实现传参、局部视图include、循环列表数据的使用
  2. BZOJ2647 : [Neerc2011]Journey
  3. 在ASP.NET Core 2.0中使用MemoryCache
  4. 【CodeForces - 1084D】The Fair Nut and the Best Path (树形dp)
  5. linux硬盘为啥分区,Linux下为什么要进行磁盘的分区
  6. django mongodb mysql,Django MongoDB Django NoSQL方案
  7. 软件开发技术视频教程
  8. java 幂函数_java的math常用方法
  9. apache-storm例子:统计句子中的单词数量
  10. 拓扑排序以及求解关键路径
  11. 在Java中按字节获得字符串长度的两种方法
  12. php斗鱼弹幕接口,php实现斗鱼弹幕,一起来欣赏弹幕吧~
  13. 两直线平行交叉相乘_十字交叉法解析
  14. VB6银联读卡之旅(二)__55域获取流程及相关注意
  15. 虚拟机(VM)与JVM
  16. T31项目架构选型方案
  17. 三足鼎立写博赚钱之道--献给2010年初互联网扫黄运动被错杀的兄弟
  18. 对抗生成网络(GAN)简介及生成数字实战
  19. java如何获取Class类对象
  20. Win11新电脑开机怎么跳过登录microsoft账户?

热门文章

  1. dll文件复制和替换不了_重新编译mono——Android动态更新dll
  2. C++ nlohmann/json 的主要用法
  3. Linux怎么查看并杀死被占用的端口?
  4. Virtual Box6.1配置CentOS6.5版本的网络连接(静态IP设定)——虚拟机和宿主机互相ping通以及ping通连接外网
  5. Netty实例:实现简单的通讯功能
  6. python常用单词汇总_在.txt文件中找到最常用单词的Python程序必须打印word及其连接...
  7. web工程中集成cas单点登录
  8. pandas fillna_6个提升效率的pandas小技巧
  9. mysql 5.7直接安装版,mysql5.7怎么安装 mysql 5.7安装图文教程
  10. 合成孔径成像算法与实现_浅析太赫兹成像技术在消防领域中的应用前景