Python网络爬虫(二):Requests库

1 请求方式

Requests模块常用的两种请求方式是GET和POST.

1.1 GET请求

GET请求可以在url中携带参数,以百度为例:

python 复制代码
# 不带参数
https://www.baidu.com/
# 带参数wd
https://www.baidu.com/s?wd=iphone

Requests实现GET请求,对于带参数的URL有两种请求方式:

python 复制代码
import requests

# 第一种方式
response = requests.get('https://www.baidu.com/s?wd=iphone')

# 第二种方式
url = 'https://www.baidu.com/s'
params = {'wd':'iphone'}
response = requests.get(url, params=params)

两种方式都是请求同一个url,但第一种方式更加简洁,如果参数是动态变化的,可以使用格式化字符串对url动态设置,例如f"https://www.baidu.com/s?wd={传入变量}"

1.2 POST请求

POST请求也就是提交表单,表单的数据内容就是POST的请求参数。POST请求的参数data的数据格式可以为字典、元组、列表和JSON格式。

当向服务器发送请求后,服务器会返回相应的响应对象(response),包含服务器响应的信息。requests提供以下方法获取响应内容。

|----------------------|--------------------------------------------------|
| r.status_code | 响应状态码 |
| r.raw | 原始响应体、使用r.raw.read()读取 |
| r.content | 字节方式的响应体,需要进行解码 |
| r.text | 字符串方式的响应体,会自动根据响应头部的字符编码进行解码 |
| r.headers | 以字典对象存储服务器响应头,但这个字典比较特殊,字典键不区分大小写,若键不存在,则返回None。 |
| r.json() | Requests中内置的JSON解码器 |
| r.raise_for_status() | 请求失败(非200响应),抛出异常 |
| r.url | 获取请求链接 |
| r.cookies | 获取请求后的cookies |
| r.encoding | 获取编码格式 |

2 复杂的请求方式

2.1 添加请求头

请求头为字典形式,在requests中的参数名为headers,示例代码如下:

python 复制代码
headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
        }

requests.get("https://www.jd.com", headers=headers)

2.2 使用代理ip

代理ip的使用方法笔者将会在之后单独写文章介绍,这里只做演示。代理ip的使用方法与请求头的使用方法一致,需要设置proxies参数,示例代码如下:

python 复制代码
import requests
proxies = {
    "http": "http://10.120.1.110:8888",
    "https": "http://10.120.1.110:8888",
    }

requests.get("https://www.jd.com/", proxies=proxies)

2.3 证书验证

通常设置关闭验证即可,即verify=False,默认情况下是True。示例代码如下:

python 复制代码
import requests

url = "https://www.jd.com"
# 关闭证书验证
response = requests.get(url, verify=False)

3 总结

Requests是Python的一个很实用的HTTP客户端库,可完全满足如今编写网络爬虫程序的需求,是爬虫开发人员首选的爬虫库。其具有语法简单易懂,完全符合Python优雅和简洁的特性,在兼容性上完全兼容Python任何版本,具有较强的适用性。

使用Requests发送请求时可以携带以下几种常见的参数:

python 复制代码
import requests

url = 'https://www.jd.com'

# GET请求

response = requests.get(url, headers=headers, proxies=proxies, verify=False, cookies=cookies)

# POST 请求

response = requests.post(url, headers=headers, proxies=proxies, verify=False, cookies=cookies)
相关推荐
ITKEY_22 分钟前
flutter日期选择国际化支持
开发语言·javascript·flutter
刃神太酷啦32 分钟前
C++ 异常处理机制:从基础到实践的全面解析----《Hello C++ Wrold!》(20)--(C/C++)
java·c语言·开发语言·c++·qt·算法·leetcode
蓝倾97634 分钟前
小红书获取用户作品列表API接口操作指南
java·服务器·前端·python·电商开放平台·开放api接口
q5673152335 分钟前
告别低效:构建健壮R爬虫的工程思维
开发语言·爬虫·r语言
枫叶丹41 小时前
【Qt开发】显示类控件(一)-> QLabel
开发语言·qt
Python私教1 小时前
源滚滚Rust全栈班v1.02 无符号整数详解
开发语言·后端·rust
yBmZlQzJ1 小时前
PyQt5 修改标签字体和颜色的程序
开发语言·python·qt
胖达不服输1 小时前
「日拱一码」081 机器学习——梯度增强特征选择GBFS
人工智能·python·算法·机器学习·梯度增强特征选择·gbfs
float_六七1 小时前
Java Stream流:从入门到精通
java·windows·python
星空的资源小屋2 小时前
PPTist,一个完全免费的 AI 生成 PPT 在线网站
人工智能·python·电脑·excel