一.前言

requests是Python中一个用来发出HTTP请求的库,它将复杂的网络请求封装为一个简单的API以供用户调用,对于一般比较简单的爬虫程序而言,requests库足矣,今天博主分享一下requests库的常见用法,本文主要针对有志爬虫的新人。

二.常见用法

2.1 安装与引用

当然,在使用前需要在Python环境中安装requests库:
pip install requests
安装完成后便可以通过import命令即可引用该库:
import requests

2 GET请求

HTTP最常见的请求包括GET和POST,这里先介绍前者。GET请求用来向服务器请求资源。通过GET请求,我们发送自定义HTTP请求头给服务器,浏览器在发送GET请求时的HTTP请求头一般包括Accept、Accept-Encoding、UserAgent等。
requests库发送GET请求,只需要调用如下的API:
requests.get(url, params, headers, proxies, timeout, verify)
# 参数说明
"""
url: 请求的URL
params: 字典\元组\列表,查询字符串参数,通过其可以向URL对应的参数传值,从而能够将数据传送给服务器,一般是URL?后面的内容
headers: 请求头,字典类型 (python程序伪装成浏览器发送请求的关键)
proxies: 字典,设置代理IP
timeout: 数字,超时时间,单位为秒
verify: 布尔值True或者False,指示是否验证服务器的TSL证书,默认为True (爬虫程序有时候需要将其关闭,否则验证失败,爬虫终止)

"""

2.2.1 Response对象
requests.get()函数将会返回服务器的响应——requests.Response对象,该对象包含了请求的结果,其常用属性/方法概括如下表:

属性    说明
url    响应的URL
text    响应的内容 (unicode码)
json()    如果响应的结果是一个json对象,可以调用该方法,否则会报错
content    返回响应的内容(字节的形式)
status_code    响应代码,其中200表示响应成功,404表示Not Found等等

2.2.2 GET请求示例
下面就以博主发的一篇文章使用NNI,从此告别手动调参作为例子,其对应的URL为:

https://blog.csdn.net/qq_42103091/article/details/123287865?spm=1001.2014.3001.5502

我们可以调用requests.get()方法来模拟浏览器请求该文章:

import requests
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36"}
params = {"spm":"1001.2014.3001.5502"}
url = "https://blog.csdn.net/qq_42103091/article/details/123287865"

response = requests.get(url=url, params=params, headers=headers)
# 响应的URL
print(response.url)
# https://blog.csdn.net/qq_42103091/article/details/123287865?spm=1001.2014.3001.5502
# 状态码
print(response.status_code)
# 200

可以看到上述示例的请求URL中问号后面的字段便是作为查询字符串参数的值而传入get()函数的。

2.3 POST请求
倘若需要向服务器上传数据,一般采用POST请求。常见的应用场景为提交HTML表单。发送给服务器的数据包含在POST请求的消息体 (request body)中,POST请求中的Content-Type用来指示请求正文的数据类型,而Content-Length则指示了请求中的数据长度。

requests库发送POST请求,只需要调用如下的API:
requests.post(url, data, json, headers, proxies, timeout, vertify)
# 参数说明
"""
url: 请求的URL
data: 发送给指定URL的字典、元组列表、字节或文件对象
json: 发送给指定URL的JSON对象
headers、proxies、timeout、vertify: 与get()方法同
"""

注:post方法在调用后也会返回一个requests.Response对象。

2.3.1 POST请求示例
https://httpbin.org/forms/post  常用调试网址
为避免涉及具体网站,本次实践采用了某网站提供的验证POST请求网址:https://httpbin.org/forms/post,其界面表单截图为:


填入数据后,点击提交按钮可以看到提交的请求,其界面截图如下:

基于此,我们可以利用requests.post()方法来完成该操作:

import requests
import json

url = "https://httpbin.org/post"

data = {
    "comments": "加辣", 
    "custemail": "119@163.com", 
    "custname": "2333", 
    "custtel": "119", 
    "delivery": "17:30", 
    "size": "large", 
    "topping": "onion"
}

response = requests.post(url=url, data=data)
print(response.status_code)
# 200
with open("temp.json", "w", encoding="utf-8") as fp:
    json.dump(response.json(), fp, ensure_ascii=False)

上述代码实现了表单的提交,并将响应的JSON对象保存到了本地。返回200说明提交表单成功,下面是其对应返回的json数据截图:

实际运营的网站大多数都比这要复杂,此时就要具体问题具体分析了。

四.结语

在完成本文的过程中,参考了很多非常好资源:
HTTP GET Request Method :https://reqbin.com/Article/HttpGet   
How do I send an HTTP POST request? https://reqbin.com/req/zvtstmpb/post-request-example
以上便是本文的全部内容,要是觉得不错的话,可以点个赞或关注一下博主,你们的支持是博主进步的不竭动力,当然要是有问题的话也敬请批评指正!!!

python requests常见用法总结相关推荐

  1. (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案

    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 参考文章: (1)(转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 (2)ht ...

  2. 爬虫库分享(一):requests常见用法总结

    一.前言 requests是Python中一个用来发出HTTP请求的库,它将复杂的网络请求封装为一个简单的API以供用户调用,对于一般比较简单的爬虫程序而言,requests库足矣,今天博主分享一下r ...

  3. python requests 高级用法

    转自 http://www.myvary.cn/index.php/2017/04/29/python-requests/ 高级用法 本篇文档涵盖了 Requests 的一些高级特性. 北上广深杭 交 ...

  4. python requests库用法_python之requests库的使用

    一.什么是requests? Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库. 二.安装requests >p ...

  5. python redis常见用法总结

    python-redis用法总结 Redis简介 python连接Redis redis基本命令 String set(name, value, ex=None, px=None, nx=False, ...

  6. Python list 常见用法

    测试你对Python列表知识的60个问题 通过掌握列表基础知识来压制算法问题 图片来自Pexels的Andrew Neel 我最近做了很多算法题,发现自己对列表的理解并不尽如人意. 这是我写的60个列 ...

  7. python not常见用法

    前言 python 中not 作为一个关键字有着很重要的作用,下面着重说一下比较常用的几个作用. 目录标题 前言 一.用于判断变量是否为None 二.用于判断有类型的变量是否为空 三.和关键字in搭配 ...

  8. python爬虫库的常见用法_$python爬虫系列(2)—— requests和BeautifulSoup库的基本用法...

    本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法. 1. 安装requests和BeautifulSoup库 可以通过3种方式安装: easy_inst ...

  9. python六:常见数据类型以及常见用法

    bool 布尔值 # 在bool中 0,()(空元祖),[](空列表),{}(空字典),None,""(空字符串) 都是False int 整形 float 浮点型 str 字符串 ...

最新文章

  1. HTML保存节点,{HTML5}DOM节点操作-第一节
  2. R语言临床预测模型的评价指标与验证指标实战:自定义的净重新分类指数NRI(Net Reclassification Index, NRI)函数
  3. 064文件方式实现完整的英文词频统计实例
  4. Linux操作系统上lsof命令详解
  5. Linux文本模式中文乱码
  6. 缺货大环境下,假货防不胜防,我们又该怎样分辨真假芯片?
  7. Spring vs Guice:重要的一个关键区别
  8. Linux crontab 定时任务没执行,没收到错误信息邮件
  9. springboot 以jar方式在linux后台运行
  10. 绝对定位水平垂直居中(HTML、CSS)
  11. mac apache php.ini,Mac自带的Apache使用详解
  12. matlab解三角函数方程某值附近,matlab解三角函数已知参数方程
  13. 工作总结,关于浏览器不兼容的问题。
  14. 星辰变java镇东王府在哪里_星辰变中让人非常失望的四位高手,最后一位只动口不出手!...
  15. 路由器找不到拨号服务器,路由器设置宽带拨号无法上网 怎么办?
  16. FPGA之VGA转HDMI之编码模块的编写
  17. DCloud使用小结
  18. Kinect开发遇到的问题
  19. 【STM32】基于IWDG实现复位(手动喂狗)功能
  20. 工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

热门文章

  1. 基于RFID定位技术的工地人员定位考勤系统-工地人员定位-新导智能
  2. java语言和C语言的区别
  3. Java毕业设计_基于SSM框架的图片素材管理系统的设计与实现
  4. 2019年肖秀荣命题人讲真题上下两册【全】
  5. 1:算法php/go [反转链表;LRU缓存结构 ;判断链表中是否有环]
  6. 判断单链表是否有环 两链表是否相交
  7. 建模助手 | 关于REVIT的小技巧,你知道多少?
  8. Ubuntu fcitx输入法占用内存越来越大(超过1G)
  9. pandas中使用fillna函数填充NaN值
  10. 【JAVA】逻辑控制