使用Python的requests函数进行网络请求和数据获取
在网络爬虫和数据分析等领域,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中网络请求和数据获取的重要利器。
