一、背景说明

http请求的难易对一门语言来说是很重要的而且是越来越重要,但对于python一是urllib一些写法不太符合人的思维习惯文档也相当难看,二是在python2.x和python3.x中写法还有差别。

实在是太难用,开始差点由于这个原因想放弃python,直到看urllib.request文档时看到下边这句话,认识了requests。总的而言requests配得上“HTTP for Humans”的口号。

1.1 适用版本

适用于python2.6、python2.7、python3.4及以上版本,参见官方说明。我这里使用的是当前最新的python3.7。

1.2 安装requests模块

pip install requests
# ubuntu类系统也可以直接用apt安装
# sudo apt-get install python-requests

二、使用requests模块完成各种操作

下边对于https的链接请求时会带上”verify=False“参数,因为默认Python会进行证书校验如果不是信任的证书会报错,带上”verify=False“指示不进行证书校验。

2.1 引用requests模块

import requests

2.2 get请求

import requestsurl='https://www.baidu.com'
r = requests.get(url,verify=False)
print(r.status_code)

2.3 post请求

import requestsurl='https://www.baidu.com'
data='username=ls&password=toor'
r = requests.post(url,data=data,verify=False)
print(r.status_code)

当前很多api是以json形式提交的,所以在使用post的时候我们可能想提交json数据。

提交json有两步:一是data要编码成json形式(python中的字典形式上和json一样但本质上不一样所以要编码),二是设置“Content-type”头的值为application/json(设置头部参见下面2.5,这里先用)

import json
import requests# 一定要设置Content-Type值为application/json
headers={}
headers['Content-Type']='application/json'url='https://www.baidu.com'
data={"username":"ls","password":"toor"}
# 一定要用json.dumps把data格式化成json
# r = requests.post(url,headers=headers,data=json.dumps(data),verify=False)
# 或者直接使用json参数代替data,此时requests会自动进行格式化和设置Content-Type头的工作
r = requests.post(url,json=data,verify=False)
print(r.status_code)

为了方便对比验证,另外再附curl post提交的方法:

 curl -H "Content-Type:application/json" -X POST --data '{"username": "ls","password":"toor"}' https://www.baidu.com/

2.4 使用代理

import requestsurl='http://docs.python-requests.org/en/master/'
proxies={'http':'127.0.0.1:8080','https':'127.0.0.1:8080'
}
r = requests.get(url,proxies=proxies)
print(r.status_code)

2.5 自定义header

import requestsurl='http://docs.python-requests.org/en/master/'
headers={'User-Agent':'self-defind-user-agent','Cookie':'name=self-define-cookies-in header'
}
r = requests.get(url,headers=headers)
print(r.status_code)

2.6 自定义Cookie

实验发现如果自定义header中定义了cookies那么此处设置的cookies不生效

import requests

url='http://docs.python-requests.org/en/master/'cookies={'name1':'cookie1','name2':'cookies2'}#cookies=dict(name1='cookie1',name2='cookies2')r = requests.get(url,cookies=cookies)print(r.status_code)

2.7 会话保执

经常很多请求只有在登录后才能进行,实现登录效果一般的做法是执行登录请求,然后从返回结果中提取sessionid放入自定义cookie中。

这种方法在requests中也行得通,但requests提供了更为简单的方法,直接使用request.Session类来请求即可,其保持登录的原理是保留之前请求中服务端通过set-cookie等设置的参数。

s = Session()
url='http://docs.python-requests.org/en/master/'
# 所有方法和直接使用requests时一样用即可
s.get(url)

参考:

http://docs.python-requests.org/en/master/(官方文档)

https://www.cnblogs.com/landhu/p/7048255.html

https://stackoverflow.com/questions/9733638/post-json-using-python-requests

转载于:https://www.cnblogs.com/lsdb/p/9071015.html

python3使用requests模块完成get/post/代理/自定义header/自定义Cookie相关推荐

  1. Python3之requests模块

    Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 发送G ...

  2. python爬取网页内容requests_[转][实战演练]python3使用requests模块爬取页面内容

    本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取 ...

  3. requests模块基本使用、代理ip、session访问

    python原生基于网络请求的模块,比urllib更实用 相比urllib优势 自动处理编码 自动处理post请求参数.并转码 简化cookie和代理操作 安装使用 pip install reque ...

  4. Python每日一练(24)-requests 模块获取免费的代理并检测代理 IP 是否有效

    目录 1. 通过代理服务发送请求 2. 获取免费的代理 IP 3. 检测代理 IP 是否有效 1. 通过代理服务发送请求 在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取的情况,这是因为 ...

  5. python requests_Python爬虫之requests模块

    # requests模块 知识点: 掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 ...

  6. python网络爬虫系列(四)——requests模块

    requests模块 知识点: 掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 掌握 ...

  7. 2021-11-03大数据学习日志——数据埋点+网络爬虫——requests 模块

    requests 是用 python 语言编写的一个开源的HTTP库,可以通过 requests 库编写 python 代码发送网络请求,其简单易用,是编写爬虫程序时必知必会的一个模块. reques ...

  8. requests模块proxies代理IP设置无效问题的解决

    学python踩了很多坑,从本站好多文章里学了好多,解决了好多坑,今天又解决了一个,感觉因该记录下来. 感谢:这位博主 援引:(Python)python3.7以后requests模块proxy(代理 ...

  9. Python3: http/https请求模块 - requests 模块

    本文链接: https://blog.csdn.net/xietansheng/article/details/115558046 Python3 学习笔记(目录) requests 模块用于 HTT ...

最新文章

  1. .INFO域名总量跌破700万,8月第三周净减51,477个
  2. ipsec***原理与配置
  3. 自学python能赚钱吗-学习Python多久能找到工作?老男孩Python开发培训
  4. 软件项目管理0723:一页项目管理-主任务
  5. php xss 实例,php - 关于sql注入和xss的具体实例分析
  6. 第一个帖子吧,我也博客了!
  7. iPhone手机投屏小米盒子
  8. Redis笔记5-redis高可用方案
  9. Linux下配置安装JupyterNotebook,windows下通过浏览器直接连接使用
  10. DevExpress控件导出Excel
  11. 【线代】相似矩阵中特征根的求法:特征方程、一般方程为什么求得的特征根含义不同?
  12. 货币制度 - 异想天开
  13. 我的007之skyfall歌词鉴赏及翻译
  14. 黑客攻防之告别脚本小子-----精简实用渗透测试python小白入门
  15. 华硕a53s拆机图解_华硕a53s配置 功能与外观描述【图解】
  16. 交换机vlan配置实训心得_交换机与VLAN的配置实验报告.doc
  17. 完整登录、注册页面(无功能)
  18. ad16自动布线设置规则_pcb自动布线设置_设置线间距与宽度设置_pcb布局布线技巧...
  19. 社交舞 - 简介,释名,风格,舞步 - 金山词霸汉语 - HAPPY Life
  20. 解决win7打印机共享出现“无法保存打印机设置(错误0x000006d9)的问题

热门文章

  1. Swift主题色顶级解决方案
  2. UITextFIeld的输入格式问题 ----W.P
  3. 【转载】无需图片,使用CSS3实现圆角按钮
  4. 使用NSRunloop等待异步任务完成
  5. Redis第一集:Windows下安装Redis和测试
  6. OpenCvSharp_FindContours函数参数详解
  7. mysql的存储引擎种类,mysql 存储引擎,基本数据类型
  8. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...
  9. idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库
  10. python统计字符串数字个数_python统计字符串中数字个数_后端开发