欢迎访问宙启技术站
智能推送

使用Python的requests函数进行网络请求和数据获取

发布时间:2023-06-06 08:13:32

在网络爬虫和数据分析等领域,requests是一个非常常用的Python库。requests是一个简洁而优雅的HTTP库,可以轻松地发送HTTP请求和获取HTTP响应。它比urllib更加简洁易懂和灵活,支持HTTP协议的所有方法(GET、POST、PUT、DELETE、HEAD、OPTIONS),支持多种数据格式(JSON、XML、文件上传),支持cookie、session、代理等常见网络模块,使用方法非常简单。

下面我们将通过几个例子,来介绍requests的基本使用方法。

1. GET请求

用法:requests.get(url, params=None, **kwargs)

其中,url是请求的网址,params是请求的参数,**kwargs是其他可选参数,比如headers、timeout等。

案例:

请求简书的首页,得到响应的HTML页面:

import requests res = requests.get('https://www.jianshu.com/') print(res.text)

输出:

<!DOCTYPE html>

<html>

<head>

......

</html>

2. POST请求

用法:requests.post(url, data=None, json=None, **kwargs)

其中,url是请求的网址,data是POST请求的表单数据,json是POST请求的json数据,**kwargs是其他可选参数,比如headers、timeout等。

案例:

向豆瓣接口发送POST请求,提交用户名和密码,得到响应的json数据:

import requests data = { 'name': 'user', 'password': '123456' } res = requests.post('https://api.douban.com/v2/user/login', data=data) print(res.json())

输出:

{

   "code": 1001,

   "msg": "user not found"

}

3. 下载文件

用法:requests.get(url, stream=True, **kwargs)

其中,stream=True表示以流方式下载文件,**kwargs是其他可选参数,比如headers、timeout等。

案例:

从网络下载图片或视频文件:

import requests url = 'https://img-blog.csdnimg.cn/20210803102554408.jpg' res = requests.get(url, stream=True) with open('test.jpg', 'wb') as f: for chunk in res.iter_content(chunk_size=1024): f.write(chunk)

4. 上传文件

用法:requests.post(url, files=None, **kwargs)

其中,files是上传的文件,**kwargs是其他可选参数,比如headers、timeout等。

案例:

上传本地的文件到服务器:

import requests files = { 'file': ('test.jpg', open('test.jpg', 'rb'), 'image/png') } res = requests.post('http://example.com/upload', files=files) print(res.text)

5. 设置代理服务器

用法:requests.get(url, proxies=None, **kwargs)

其中,proxies是设置的代理服务器,**kwargs是其他可选参数,比如headers、timeout等。

案例:

使用代理服务器访问百度首页,得到响应的HTML页面:

import requests proxies = { 'http': 'http://127.0.0.1:1080', 'https': 'http://127.0.0.1:1080' } res = requests.get('http://www.baidu.com', proxies=proxies) print(res.text)

6. Cookie和Session

设置Cookie和Session可以在网络请求中保持登录状态,访问需要登录后才能访问的页面。Session与Cookie都是会话管理技术,Session包含多个Cookie,可以实现数据的持久化。使用requests.Session()创建一个会话,调用get和post方法,记录会话的状态。

案例:

登录GitHub,通过Session保持登录状态,访问需要登录后才能访问的页面:

import requests session = requests.Session() login_data = { 'login': 'your_user', 'password': 'your_password' } session.post('https://github.com/login', data=login_data) res = session.get('https://github.com/settings/profile') print(res.text)

以上就是使用Python的requests函数进行网络请求和数据获取的基础操作方法,还有许多高级、复杂操作,需要在实践中慢慢掌握。总体来说,requests在Python的数据爬取和处理任务中功能十分强大,是Python中网络请求和数据获取的重要利器。