小工具知识网

当前位置: 首页 > 行业知识 > 网络爬虫基础——【requests】模块详解

行业知识

网络爬虫基础——【requests】模块详解

2026-11-10 01:17:52 来源:互联网转载

一、requests库的介绍和安装

requests是Python中的一个第三方库,它提供了一种简单而优雅的方式,比原生的HTTP请求方式更易于使用。requests是一个Python库,用于发送各种HTTP请求。requests库的安装可以通过pip命令进行,如果有不会下载安装的可以参考我的文章《Python第三方库安装详细教程(图文结合)》,安装代码如下:

pip install requestspip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装完成后,可以使用import引入requests模块进行使用。引入代码如下:

import requests

二、requests模块的基本使用

requests可以简单、直观地实现HTTP协议中的各种请求功能。下面简单介绍requests模块的基本使用。

1.发送GET请求

在Python中,使用requests发送GET请求非常简单,只需要调用requests模块中的get()函数,以百度首页为例,向百度发起了一个get请求,并返回响应内容,代码如下:

import requests  # 引入第三方库response = requests.get('https://www.baidu.com')print(response.text)  # 以文本形式打印响应的内容

2.带参数的GET请求

有时候需要在URL中加上一些参数来完善请求。requests提供了一种简单的方式,即使用params参数传递参数,代码如下:

import requestsurl = 'https://www.baidu.com'params = {'key1': 'value1', 'key2': 'value2'}response = requests.get(url, params=params)print(response.text)

3.发送POST请求

除了GET请求外,使用requests还可以发送POST请求。发送POST请求时需要设置data参数或json参数,代码如下:

import requestsdata = {'key1': 'value1', 'key2': 'value2'}response = requests.post('https://www.baidu.com', data=data)print(response.text)

或者,使用json参数:

import requestsjson = {'key1': 'value1', 'key2': 'value2'}response = requests.post('https://www.baidu.com', json=json)print(response.json)

其中,data参数适用于传送表单数据,json参数适用于传送JSON格式的数据。

4.设置请求头信息

在很多情况中,我们都需要进行请求头伪装,需要在请求中添加一些HTTP头信息。设置一个user-agent的请求头来模拟浏览器请求的方式。使用requests时,只需要调用请求对象的headers属性即可添加请求头信息,代码如下:

import requestsheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}response = requests.get('https://www.baidu.com', headers=headers)print(response.text)

如果未设置请求头信息,有的网站服务器收到的请求头信息是python-requests/2.28.2,服务器就会拒绝访问,程序抛出异常。

print(response.request.headers)  # 查看服务器收到的请求头信息# 输出的结果如下:# {'User-Agent': 'python-requests/2.28.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

5.设置超时时间

有时候在发送请求时会出现等待过长的情况,需要设置超时时间。requests提供了timeout参数来设置超时时间,设置超时时间为3秒,如果超过3秒就会抛出异常。实现代码如下:

import requestsresponse = requests.get('https://www.baidu.com', timeout=3)print(response.text)

三、requests模块进阶使用

1.带状态保持的请求

在实际开发中,我们常常需要在一个会话中保持状态。requests提供了session对象来实现带状态保持的请求,代码实现如下:

import requestssession = requests.Session()session.get('https://www.baidu.com')response = session.get('https://www.baidu.com/cookies')print(response.text)

在上面这部分代码中,我们用session对象分别发送了两个请求。第一个请求是普通的GET请求,它会返回一些cookie信息,在第二个请求中我们传入了这些cookie信息,从而实现了带状态保持的请求。

2.文件上传

使用requests也可以实现文件上传功能。在构造POST请求时,我们可以使用files参数来上传文件:

import requestsfiles = {'file': open('test.txt', 'rb')}response = requests.post('https://www.baidu.com', files=files)print(response.text)

3.cookie操作

requests提供了对cookie的支持和操作。使用requests时,我们可以通过cookies属性获取响应中的cookie信息:

import requestsresponse = requests.get('https://www.baidu.com')cookies = response.cookiesprint(cookies)

通过cookies属性获取的cookie信息可以直接用于下一次请求中的cookies参数。

四、如何使用代理IP

在实际开发中,我们有时候需要使用代理服务器来发送HTTP请求。requests提供了一个proxies参数来实现代理设置,网上提供了很多免费的代理IP,如: https://www.kuaidaili.com/free/,打开如下图:

import requestsproxies = {  'http': 'http://60.167.20.232:1133',  'https': 'https://60.167.20.232:1133',}response = requests.get('https://www.baidu.com', proxies=proxies)print(response.text)

在上面这部分代码中,设置了一个代理服务器,使用了proxies参数,将代理服务器的URL传递给了requests.get()函数。(代理有风险,请慎用)

五、requests模块的使用案例

利用模块requests和BeautifulSoup获取彼岸图网站的4K高清图片

import requestsfrom bs4 import BeautifulSoupurl = 'https://pic.netbian.com/4kyouxi/'head = {    'users-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.39'    }response = requests.get(url = url, headers=head)response.encoding = 'gbk'# print(response.text)print(response.status_code)soup = BeautifulSoup(response.text,'html.parser')# 定位到ulimg_url = soup.find('ul',attrs={"class":"clearfix"})# print(img_url)# 找到ul下的所有a标签内容,返回列表a_href = img_url.find_all('a')# print(a_href)for href in a_href:    # 遍历列表,通过get来获取a标签下href属性值    img_href = 'https://pic.netbian.com' + href.get('href')    # print(img_href)    response2 = requests.get(url = img_href,headers=head)    response2.encoding = 'gbk'    soup2 = BeautifulSoup(response2.text,'html.parser')    photo_url = soup2.find('p',class_="photo-pic")    # print(photo_url)    # 遍历的url返回多个列表,取每个列表索引号为0的值    src_url = photo_url.find_all('img')[0]    # print(src_url)    new_src = 'https://pic.netbian.com'+ src_url.get('src')    img_name = new_src.split('/')[-1]    # print(new_src)    response3 = requests.get(new_src).content    with open('D:\图片\'+img_name,'wb')as file:        file.write(response3)        print("下载成功!")        break

总结

本篇文章介绍了requests模块的基本用法、进阶用法和一些实际案例。requests是Python中非常常用的HTTP请求模块,用途广泛,不仅可以用于爬虫,也可用于各种网络请求。学习使用requests模块对于Python网络爬虫的入门非常重要。

如果想要深入了解requests模块的更多用法,建议可以去查看它的官方文档,https://docs.python-requests.org/en/latest/ ,其中给出了更加详细的API。

文章对你有帮助的话,麻烦点个赞吧!

上一篇:商超服务器怎么安装软件?

下一篇:宝宝怎么连接不上服务器?