写在前面

这篇文章是我照着廖雪峰python网站学习的,大致内容差不多,多了我一丢丢的自己的想法。如果发现有什么不对的话请及时联系我。qq:472668561

参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1183249464292448

介绍

这个模块是python的‘必用’模块,用来处理HTTP请求的请求和响应。在这里只介绍一些基本的。

通过pip install requests来安装。

使用版本

我学习时使用的python版本是3.7.4,requests版本2.22.0,算是比较新的版本了,可能不同版本会有差异。

开始

    >url = "http://www.baidu.com"
>r = requests.get(url)
>r.status_code
200

status_code用来显示服务器响应状态码,对状态码感兴趣的可以自行百度。

    >r.text
'<!DOCTYPE html>\r\n~~~~~~</html>\r\n'
>r.content
b'<!DOCTYPE html>\r\n~~~~~~</html>\r\n'

text显示网页返回内容;content是以二进制的方式读取的,查看的内容是以b开头,说明以二进制的方式读取,则文件io操作的时候也要以二进制方式进行。

    > with open('./test.txt','w') as f:
> f.write(r.content)
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: write() argument must be str, not bytes
>with open('./test.txt','wb') as f:
> f.write(r.content)
2381

params参数,适用于带参数的url。

    >r = requests.get(url,params={'wd':'requests','tn':'monline_4_dg','ie':'utf-8'})
>r.url
'http://www.baidu.com/?wd=requests&tn=monline_4_dg&ie=utf-8'

url属性用来显示该次请求的url。

reuqests可以对特定类型响应,例如JSON;注意,返回的如果不是JSON格式会报错。

    >r.json()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
···
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

可以将url修改为返回格式是json格式的链接,如Github的API,https://api.github.com/search/repositories?q=language:python&sort=stars

需要传入HTTP Header时,需要传入一个字典作为headers参数,但时一行写难免不直观,多数都是给定headers变量。请求时使用headers=headers。

    >headers = {'User-Agent':'test'}
>r = requests.get(url,headers=headers)

要使用POST方式请求,把get()改为post(),然后传入data参数作为POST请求的数据。

data跟headers参数用法差不多。

    >data = {'test':'test'}
> r = requests.post(url,data=data)

requests模块默认使用application/x-www-form-urlencoded对POST数据编码,如果传递JSON数据,可以直接写入JSON参数。内部自动序列化为JSON。

    >params = {'key':'value'}
>r = requests.post(url,json=params)

如果上传的文件是其他的文件类型,比如excel表格,requests可以把它简化成files参数,注意是files不是file。

    >upload_file = {'file':open('./read.txt','rb')}
>r = requests.post(url,files=upload_file)

注意:读取时务必使用'rb'即二进制读取模式,这样获取的bytes长度才是文件的长度。

可以把post()修改为其他的HTTP请求方式,delete(),put(),head()等。

通过使用headers属性,获取HTTP响应头内容。

    >r.headers
{'Connection': 'Keep-Alive', 'Content-Length': '17931', 'Content-Type': 'text/html', 'Date': 'Wed, 27 Nov 2019 09:42:22 GMT', 'Etag': '"54d97487-460b"', 'Server': 'bfe/1.0.8.18'}

r.cookies,requests对cookie做了特殊处理,使我们不必解析cookie就可以轻松获取指定的cookie。

    >r.cookies
<RequestsCookieJar[]>#中括号里显示cookie内容
<RequestsCookieJar[Cookie(version=0,name='BDORZ', value='27315',~~~~~~rest={}, rfc2109=False)]>

要传入cookie参数时,使用字典作为一个cookies参数。

    >r = requests.post(url,cookies=data)

要指定超时时间时,传入以秒为单位的timeout参数

    >r = requests.post(url,timeout=1)

requests

['ConnectTimeout', 'ConnectionError', 'DependencyWarning', 'FileModeWarning', 'HTTPError', 'NullHandler', 'PreparedRequest', 'ReadTimeout', 'Request', 'RequestException', 'RequestsDependencyWarning', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__author_email__', '__build__', '__builtins__', '__cached__', '__cake__', '__copyright__', '__description__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__title__', '__url__', '__version__', '_check_cryptography', '_internal_utils', 'adapters', 'api', 'auth', 'certs', 'chardet', 'check_compatibility', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'urllib3', 'utils', 'warnings']

Python模块-requests模块使用的更多相关文章

  1. Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗

    介绍   本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容.   为了知道POST方法所需要传 ...

  2. Python之requests模块-hook

    requests提供了hook机制,让我们能够在请求得到响应之后去做一些自定义的操作,比如打印某些信息.修改响应内容等.具体用法见下面的例子: import requests # 钩子函数1 def ...

  3. Python之requests模块-cookie

    cookie并不陌生,与session一样,能够让http请求前后保持状态.与session不同之处,在于cookie数据仅保存于客户端.requests也提供了相应到方法去处理cookie. 在py ...

  4. Python之requests模块-session

    http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制.requests也提供了相应的方法去操纵它们. requests中的session对象能够让我们跨http请求 ...

  5. Python之requests模块-request api

    requests所有功能都能通过"requests/api.py"中的方法访问.它们分别是: requests.request(method, url, **kwargs) req ...

  6. Python使用requests模块访问HTTPS网站报错`certificate verify failed`

    使用requests模块访问HTTPS网站报错: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Nam ...

  7. 使用Python的requests模块编写请求脚本

    requests模块可用来编写请求脚本. 比如,使用requests的post函数可以模拟post请求: resp = requests.post(url, data = content) url即为 ...

  8. python基础-requests模块、异常处理、Django部署、内置函数、网络编程

     网络编程 urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应. 校验返回值,进行接口测试: 编码:把一个Python对象编码转 ...

  9. 关于解决Python中requests模块在PyCharm工具中导入问题

    问题引入: 今天在学习Python网络请求的时候,导入requests模块时一直报红色波浪线,如图: 反复折腾,一直以为自己没有安装requests模块,反复安装反复卸载: 安装方法: 首先 cd 进 ...

  10. python的requests模块

    使用python进行接口测试得时候可以使用requests模块,是基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库 安装requests是模块 pip instal ...

随机推荐

  1. Xmanager power suit 6 最新版注册激活附注册机

    转自:https://blog.csdn.net/the_liang/article/details/82708907 Xmanager Power Suit 6.0.0109 最新版注册激活,长期更 ...

  2. ls | ethtool

    ls -lhS *.mp4|awk '{if($5>4000000) print $0}'ls -lhS *.mp4|awk '{if(($5>100000) && ($5 ...

  3. Linux服务器重启后IP变掉的处理方式

    工作中有一台服务器为物理机,重启后IP就变掉了,影响到了使用,于是将服务器上的IP配置为静态方式,问题得以解决,具体如下: 1.登陆Linux服务器,cd /etc/sysconfig/network ...

  4. Spring 中如何自动创建代理(spring中的三种自动代理创建器)

    Spring 提供了自动代理机制,可以让容器自动生成代理,从而把开发人员从繁琐的配置中解脱出来 . 具体是使用 BeanPostProcessor 来实现这项功能. 这三种自动代理创建器 为:Bean ...

  5. C++类大小的计算

    这里记录一下怎么计算类对象的大小. 大概总结下,类的大小需要考虑以下内容: 非静态成员变量大小 数据对齐到多少位 有无虚函数(即需不需要指向虚函数表的指针,如果考虑继承的情况,则还需要看继承了多少个指 ...

  6. GitHub高级搜索

     GitHub是开发目前最为活跃的开源网站和代码托管地,虽然我们经常使用GitHub,关注各种开源项目,但可能有很多人并不太了解GitHub的搜索功能的使用.GitHub提供了简单搜索和高级搜索,高级 ...

  7. 【VS开发】【智能语音处理】特定人语音识别算法—DTW算法

    DTW(动态时间弯折)算法原理:基于动态规划(DP)的思想,解决发音长短不一的模板匹配问题.相比HMM模型算法,DTW算法的训练几乎不需要额外的计算.所以在孤立词语音识别中,DTW算法仍得到广泛的应用 ...

  8. Windown Server 2008配置tomcat9虚拟路径

    一.用途 用于保存项目运产生的文件 二.步骤 1.修改conf\下的web.xml <!-- 找到listings将false改为true -->        <init-para ...

  9. HDU 1401 Solitaire 双向DFS

    HDU 1401 Solitaire 双向DFS 题意 给定一个\(8*8\)的棋盘,棋盘上有4个棋子.每一步操作可以把任意一个棋子移动到它周围四个方向上的空格子上,或者可以跳过它四个方向上的棋子(就 ...

  10. adb 打印kernel输出的log

     一. linux 内核printk机制     1.1. Android内核是基于Linxu kernel的,因此其log机制也是通用的,在Android内核中使用printk函数进行Log输出.与 ...