宣传片制作要求说明,seo案例分析方案,百度关键词竞价,青岛工程建设管理信息网站下载Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法#xff0c;如 GET、POST、PUT、DELETE 等#xff0c;并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说#xff0c;Requests 是一个非常有用的工具。在今天的博…Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法如 GET、POST、PUT、DELETE 等并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说Requests 是一个非常有用的工具。在今天的博客中我将介绍 Requests 的基本用法并提供一个合理的爬虫实例。
一.安装 Requests
在使用 Requests 库之前您需要安装它。可以通过 pip 命令来安装
pip install requests
在国内安装的速度很慢所以我们可以修改为国内镜像源安装比如说清华大学镜像源
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple你也可以选择其他镜像源如阿里云、华为云等替换 -i 参数后的 URL。
二.基本用法
Requests 提供了简单的接口来处理 HTTP 请求和响应。我们将从最基本的 GET 请求和 POST 请求开始。
1.GET 请求
GET 请求用于从服务器获取数据。可以通过 requests.get() 方法来实现。以下是一个简单的例子通过get请求豆瓣影评
import requests# 发送GET请求
response requests.get(https://movie.douban.com/review/best/)print(response.status_code) # 输出状态码
print(response.text) # 输出响应内容
当然由于豆瓣有简单的反爬虫设置所以我们这样直接发送请求很容易就会被网站限制不要轻易尝试。
2.POST 请求
POST 请求用于向服务器发送数据通常用于提交表单或上传文件可以通过 requests.post() 方法来实现。
import requestsdata {title: foo, body: bar, userId: 1}
response requests.post(https://jsonplaceholder.typicode.com/posts, jsondata)
print(response.status_code)
print(response.json()) # 输出响应的 JSON 数据三.处理响应
Requests 库提供了多种方法来处理 HTTP 响应 response.text以字符串形式获取响应内容。 response.json()以 JSON 格式解析响应内容。 response.content以二进制形式获取响应内容。 response.status_code获取 HTTP 状态码。 response.headers获取响应头信息。 四.处理简单的反爬
添加请求头
通过设置请求头将requests库的请求伪装成浏览器请求
import requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64),Referer: https://www.example.com,Content-Type: application/json
}
response requests.get(https://api.example.com/data, headersheaders)在许多情况下自定义请求头是必需的。大多数网站至少都会有简单的爬虫检测虽然这样只能应付最简单的反爬策略但是也是最常用的伪装方法了。
五.爬虫实例
下面是一个简单的爬虫实例使用 Requests 库从豆瓣网爬取影评的标题和简介
import re
import requests# 定义要爬取的URL
url https://movie.douban.com/review/best/# 设置请求头部以模拟浏览器访问
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
}# 发送HTTP GET请求以获取网页内容
response requests.get(url, headersheaders)# 提取响应的HTML内容
con response.text# 初始化存储数据的容器
title_datas []
synopsis_datas []# 使用正则表达式提取评论标题
titles re.findall(h2a hrefhttps://movie.douban.com/review/.*?(.*?)/a/h2, con)
for title in titles:title_datas.append(title) # 将标题添加到标题列表中# 使用正则表达式提取评论内容
datas re.findall(div id.*? class.*? data-rid.*?div classshort-content.*?(.*?)\nnbsp;\(a hrefjavascript:; id.*? classunfold title展开展开/a\)/div/div, con, re.S)# 清理提取的评论内容
for data in datas:# 移除HTML标签clean_data re.sub(rp .*?.*?/p, , data)# 将多个空白字符替换为单个空格并去除前后的空白clean_data re.sub(r\s, , clean_data).strip()synopsis_datas.append(clean_data) # 将清理后的评论内容添加到列表中# 将标题和评论内容配对存储到字典中
items {}
for i in range(len(title_datas)):items[title_datas[i]] synopsis_datas[i]# 打印结果
print(items)导入库 import re用于处理正则表达式。 import requests用于发送HTTP请求并获取网页内容。 定义URL和请求头 url目标网页的地址。 headers模拟浏览器请求的头部信息防止被网站屏蔽。 发送请求并获取网页内容 requests.get(url, headersheaders)发送GET请求获取网页数据。 response.text获取响应的HTML文本内容。 初始化数据存储容器 title_datas存储提取的评论标题。 synopsis_datas存储提取的评论内容。 提取评论标题 re.findall使用正则表达式提取标题。 将标题添加到 title_datas 列表中。 提取评论内容 re.findall使用正则表达式提取评论内容。 re.sub移除HTML标签并清理多余空白。 配对标题和评论内容 使用 for 循环将标题和内容配对并存储在 items 字典中。 打印结果 输出字典 items显示标题和评论内容的配对结果。 当然这里的实例写的并不是很好只能给大家提供一个参考大家爬取数据还是要基于网页分析编写代码。 六.结论
注意事项 遵守 robots.txt在爬取任何网站之前检查其 robots.txt 文件确保你的爬虫行为符合网站的爬虫协议。频率控制不要过于频繁地访问目标网站以免对服务器造成负担。可以通过 time.sleep() 控制请求频率。异常处理在编写爬虫时考虑到网络请求可能会失败建议添加异常处理机制来保证程序的健壮性。 Requests 是一个功能强大且易于使用的库适用于各种 HTTP 请求操作。通过灵活设置请求头和使用不同的请求方法我们可以轻松实现复杂的网络请求任务。使用 Requests 库进行网络请求和数据抓取是一个强大且简单的方式。掌握其基础用法后可以更高效地进行 API 调用和网页数据抓取。