【Python爬虫】爬虫利器 requests 库小结
requests库
Requests 是一个 Python 的 HTTP 客户端库。 支持许多 HTTP 特性,可以非常方便地进行网页请求、网页分析和处理网页资源,拥有许多强大的功能。
本文主要介绍 requests 库的基础使用。
1. 安装与导入
安装requests库:快捷键 Windows+r 打开运行控制框,输入 cmd,进入命令行,输入:
pip install requests
导入:
import requests
2. 主要方法
2.1 常见的网页请求方法
常见的网页请求方法有两种:get 和 post。
get 方法,一般是直接通过发送请求,来获取网页信息。在浏览器中直接输入 URL 并回车,我们便发送了一个get请求,请求的参数会直接包含在 URL 里。比如,直接通过 get 方法获取网页上的豆瓣电影排行榜等。。
post 请求大多在表单提交时发起。比如登录网站时,填写了账号和密码后点击登录,这通常便发起了一个 post 请求,其数据以表单的形式传输,而不会体现在 URL 中。
get 请求和 post 请求的区别:
- get 请求中的参数包含在 url 里面,传递的数据可以再 url 中看到。而 post 请求的 url 不会包含这些数据,数据通过表单的形式传输,而不会体现在 url 中。
- get 请求提交的数据最多只有 1024 字节,而 post 方式则没有这个限制
对于 get 和 post 方法应用方面的选择,通常在登录时提交账号和密码,包含了敏感信息。若使用 get 请求,那么用户密码会暴露在 url 中,容易造成信息泄露,因此常用 post 方法发送。上传文件时,由于文件可能过大,也会选用 post 方式。
2.2 七个主要方法:
方法 | 描述 |
---|---|
requests.request | 发送请求,支撑以下各方法 |
requests.get | 向网页发送get请求,获取网页信息(GET) |
requests.post | 向网页发送post请求(POST) |
requests.put | 向网页发送put请求(PUT) |
requests.head | 获取网页请求头信息(HEAD) |
requests.patch | 向网页提交局部修改请求(PATCH) |
requests.delete | 向网页提交删除请求(DELETE) |
requests.Session | 会话,相比于直接requests请求,具有保持功能 |
3. 主要的使用方法
3.1 requests.request(method, url, **kwargs)
method 设置请求方式(get、post、put、head、patch、delete)
url 设置请求地址
kwargs 控制访问参数
request 方法中各方法的参数与以下相应的方法相同。
3.2 requests.get(url, params=None, **kwargs)
- url 设置请求地址。一般地址中问号后面的可以省略,问号后面的即是请求参数。
- params 设置发送请求时所带的参数,字典或字节流格式,作为额外参数连接到url中(问号后的部分)。可选
- kwargs 控制访问参数,见 kwargs参数表。可选
发送请求:
url = 'https://blog.csdn.net/weixin_52132159' # 我的博客主页
#url = 'https://blog.csdn.net/weixin_52132159?spm=1019.2139.3001.5343'
headers = {
'cookie': '...',
'Referer': '...'
}
params = {'spm': '1019.2139.3001.5343'}
response = requests.get(url, headers=headers, params=params) # 发送请求
3.3 requests.post(url, data=None, json=None, **kwargs)
- url 设置请求地址
- data 为字典、字节序列或文件对象,作为请求的内容,向服务器提交资源时使用,可选
- json 为 JSON格式的数据,作为内容向服务器提交。可选
- kwargs 控制访问参数,见 kwargs参数表。可选
发送请求:
url = 'https://fanyi.so.com/index/search' # 360翻译
headers = {
'pro': 'fanyi'
}
data = {
'eng': 0, # 是否从英文转中文
'query': '你好' # 翻译的单词
}
response = requests.post(url, headers=headers, data=data) # 发送请求
3.4 requests.Session
Session 方法可以实现回话,持续性地发送requests请求,能够跨请求保持cookie。
经实例化后,可用 get、post 等方法发送请求,用法不变。
示例:
response = requests.Session()
response.post('https://fanyi.so.com/index/search')
response.get('https://blog.csdn.net/weixin_52132159')
3.4 其他
- requests.put(url, data=None, **kwargs)
- requests.head(url, **kwargs)
- requests.patch(url, data=None, **kwargs)
- requests.delete(url, **kwargs)
其他的方法使用过程与 get 与 post 类似,都有着kwargs参数表 中的参数,依实际情况选择使用。
4. kwargs 参数表
参数 | 说明 |
---|---|
params | 送请求时所带的参数,字典或字节流格式,作为额外参数连接到url中 |
data | 字典、字节序列或文件对象,作为requests的内容,向服务器提交资源时使用 |
json | JSON格式的数据,作为内容向服务器提交 |
headers | 字典类型,请求头 |
cookies | 字典或 CookieJar 对象,从HTTP协议中解析 cookie。字典形式的 cookie 也可放入 headers中 |
auth | 元组类型,支持HTTP认证功能 |
files | 字典类型,向服务器传输文件时使用 |
timeout | 设定等待响应的时间,单位为秒 |
proxies | 字典类型,设定访问代理服务器 |
allow_redirects | 布尔类型,默认为True,重定向开关 |
stream | 布尔类型,默认为True,判断是否对获取内容立即下载 |
verify | 布尔类型,默认为True,认证SSL证书的开关 |
cert | 保存本地SSL证书路径的字段 |
参考文章:https://blog.csdn.net/qq_43406976/article/details/104538316
5. 响应内容
发送请求后,返回的是一个 response 对象。我们可以通过该对象的属性和方法获取返回内容。
方法或属性 | 说明 |
---|---|
response.url | 返回请求的URL |
response.text | 返回headers中的编码解析的结果,可以通过r.encoding='gbk’来变更解码方式 |
response.content | 返回二进制结果 |
response.status_code | 返回响应码,如200、404等 |
response.headers | 返回请求头 |
response.cookies | 返回一个RequestsCookieJar对象 |
response.history | 返回以列表存储的请求历史记录 |
response.json() | 返回返回结果经json解码后的内容,一般返回一个字典(这是个方法,要带括号) |
6. 使用格式示例
6.1 爬取360翻译(POST)
url = 'https://fanyi.so.com/index/search'
headers = {
'pro': 'fanyi',
}
data = {
'eng': 1,
'query': 'hello'
}
r = requests.post(url, data=data, headers=headers)
print(r.url)
print(r.status_code)
print(r.json()['data']['fanyi'])
输出:
https://fanyi.so.com/index/search
200
你好
6.2 爬取图片/视频
import requests
pic = requests.get('https://profile.csdnimg.cn/E/5/9/3_weixin_52132159').content
with open ('作者头像.jpg','wb') as i:
i.write(pic)
更多爬虫的教学和案例可以见作者的专栏:Python爬虫
– the End –
这篇文章就到这里了,点个赞支持一下吧!
本文收录于专栏:Python爬虫
关注作者,持续阅读作者的文章,学习更多Python知识!
https://blog.csdn.net/weixin_52132159
2021/8/6
已完成的爬虫教程:
推荐阅读
- 【爬虫】想看片了,来一起用 Python 爬取豆瓣电影分类排行榜
- Python爬虫 | 爬取b站北京奥运会开幕式弹幕,有多少人从东京奥运会跑过来的?
- 绝密!Python爬虫告诉你刷分机器人背后的原理!这篇文章差点没过审
- Python每天一道题:昆虫繁殖问题?我把密密麻麻的幼虫和成虫搞定了
- 没想到我连五年级的题目都解不出来?可不能被人小看,让万能的Python登场
- Python:程序猿怎么追女生?教你短短几行代码表白,告别表白尴尬!
- 想学Python不知从何入手?学习Python必备秘籍,附地址,速拿!
- Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
- 学习笔记 | PyInstaller 使用教程——用pyinstaller打包exe应用程序【建议收藏!】
【Python爬虫】爬虫利器 requests 库小结的更多相关文章
- 网络爬虫入门:你的第一个爬虫项目(requests库)
0.采用requests库 虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求.requests库语 ...
- 从0开始学爬虫9之requests库的学习之环境搭建
从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...
- Python使用urllib,urllib3,requests库+beautifulsoup爬取网页
Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...
- python爬虫之一:requests库
目录 安装requtests requests库的连接异常 HTTP协议 HTTP协议对资源的操作 requests库的7个主要方法 request方法 get方法 网络爬虫引发的问题 robots协 ...
- PYTHON 爬虫笔记三:Requests库的基本使用
知识点一:Requests的详解及其基本使用方法 什么是requests库 Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库,相比u ...
- 芝麻HTTP: Python爬虫利器之Requests库的用法
前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...
- python爬虫#网络请求requests库
中文文档 http://docs.python-requests.org/zh_CN/latest/user/quickstart.html requests库 虽然Python的标准库中 urlli ...
- 【python爬虫】用requests库模拟登陆人人网
说明:以前是selenium登陆取cookie的方法比较复杂,改用这个 """ 用requests库模拟登陆人人网 """ import r ...
- Python学习笔记之——requests库
requests库一个优雅而简单的用于Python的HTTP库,可以极大的简化我们发送http请求及获取响应的代码. requests是python的第三方库,所以使用之前需要先安装. 1.安装之后就 ...
随机推荐
- King's Order(hdu5642)
King's Order Accepts: 381 Submissions: 1361 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- 记录一次线上OOM调优经历
现状: k8s 的一个pod 有32G内存,每秒产生新对象的峰值在900Mb ---- 1900Mb(根据jstat计算Eden区获得) . 修改之前的参数 就一个命令行参数是-Xmx31g; 我修改 ...
- netty系列之:从零到壹,搭建一个SOCKS代理服务器
目录 简介 使用SSH搭建SOCKS服务器 使用netty搭建SOCKS服务器 encoder和decoder 建立连接 ConnectHandler 总结 简介 上一篇文章,我们讲到了netty对S ...
- 三角网格上的寻路算法Part.1—Dijkstra算法
背景 最近在研究中产生了这样的需求:在三角网格(Mesh)表示的地形图上给出两个点,求得这两个点之间的地面距离,这条距离又叫做"测地线距离(Geodesic)".计算三角网格模型表 ...
- JZOJ5405 & AtCoder Grand Contest 001 F. Permutation
题目大意 给出一个长度为\(n\)的排列\(P\)与一个正整数\(k\). 你需要进行如下操作任意次, 使得排列\(P\)的字典序尽量小. 对于两个满足\(|i-j|>=k\) 且\(|P_i- ...
- Laravel Redis分布式锁实现源码分析
首先是锁的抽象类,定义了继承的类必须实现加锁.释放锁.返回锁拥有者的方法. namespace Illuminate\Cache; abstract class Lock implements Loc ...
- Centos7 安装LAMP以及nextcloud
第一步:安装apache 在centos中 apache叫httpd yum update #更新源 yum install httpd #安装apache systemctl stop firewa ...
- vs2017 winform 组件 -- 总结
1.ComboBox [下拉框] (1) 添加选项 this.[控件名].Items.Add("内容") (2)设置下拉框 自动完成 模式 和 数据源 this.[控件名].Au ...
- 使用yum安装php*时报错的解决办法
# yum -y install php* 注意: php53-odbc64-5.3.3-2.el5.x86_64 from base has depsolving problems --> ...
- 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...