【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的内容,向服务器提交资源时使用
jsonJSON格式的数据,作为内容向服务器提交
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

已完成的爬虫教程:

推荐阅读

posted @   你豪哥哥  阅读(233)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示