当前位置: 首页 > news >正文

python : 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', json=data)
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', headers=headers)

在许多情况下,自定义请求头是必需的。大多数网站至少都会有简单的爬虫检测,虽然这样只能应付最简单的反爬策略,但是也是最常用的伪装方法了。

五.爬虫实例

下面是一个简单的爬虫实例,使用 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, headers=headers)# 提取响应的HTML内容
con = response.text# 初始化存储数据的容器
title_datas = []
synopsis_datas = []# 使用正则表达式提取评论标题
titles = re.findall('<h2><a href="https://movie.douban.com/review/.*?">(.*?)</a></h2>', con)
for title in titles:title_datas.append(title)  # 将标题添加到标题列表中# 使用正则表达式提取评论内容
datas = re.findall('''<div id=".*?" class=".*?" data-rid=".*?"><div class="short-content">.*?(.*?)\n&nbsp;\(<a href="javascript:;" id=".*?" class="unfold" title="展开">展开</a>\)</div></div>''', con, re.S)# 清理提取的评论内容
for data in datas:# 移除HTML标签clean_data = re.sub(r'<p .*?>.*?</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, headers=headers):发送GET请求获取网页数据。

response.text:获取响应的HTML文本内容。

初始化数据存储容器

title_datas:存储提取的评论标题。

synopsis_datas:存储提取的评论内容。

提取评论标题

re.findall:使用正则表达式提取标题。

将标题添加到 title_datas 列表中。

提取评论内容

re.findall:使用正则表达式提取评论内容。

re.sub:移除HTML标签并清理多余空白。

配对标题和评论内容

使用 for 循环将标题和内容配对,并存储在 items 字典中。

打印结果

输出字典 items,显示标题和评论内容的配对结果。

当然这里的实例写的并不是很好,只能给大家提供一个参考,大家爬取数据还是要基于网页分析,编写代码。

六.结论

注意事项:

  1. 遵守 robots.txt:在爬取任何网站之前,检查其 robots.txt 文件,确保你的爬虫行为符合网站的爬虫协议。
  2. 频率控制:不要过于频繁地访问目标网站,以免对服务器造成负担。可以通过 time.sleep() 控制请求频率。
  3. 异常处理:在编写爬虫时,考虑到网络请求可能会失败,建议添加异常处理机制来保证程序的健壮性。

Requests 是一个功能强大且易于使用的库,适用于各种 HTTP 请求操作。通过灵活设置请求头和使用不同的请求方法,我们可以轻松实现复杂的网络请求任务。使用 Requests 库进行网络请求和数据抓取是一个强大且简单的方式。掌握其基础用法后,可以更高效地进行 API 调用和网页数据抓取。

相关文章:

python : Requests请求库入门使用指南 + 简单爬取豆瓣影评

Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法&#xff0c;如 GET、POST、PUT、DELETE 等&#xff0c;并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说&#xff0c;Requests 是一个非常有用的工具。在今天的博…...

宋红康JVM调优思维导图

文章目录 1. 概述2. JVM监控及诊断命令-命令行篇3. JVM监控及诊断工具-GUI篇4. JVM运行时参数5. 分析GC日志 课程地址 1. 概述 2. JVM监控及诊断命令-命令行篇 3. JVM监控及诊断工具-GUI篇 4. JVM运行时参数 5. 分析GC日志...

linux 网卡配置

linux网卡可以通过命令和配置文件配置,如果是桌面环境还可以通过图形化界面配置. 1.ifconfig(interfaces config)命令方式 通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性&#xff0c;ifconfig工具不仅可以被用来…...

IEEE |第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)

第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)定于2024年10月18-20日在中国杭州隆重举行。本届会议将主要关注机器学习和计算机应用面临的新的挑战问题和研究方向&#xff0c;着力反映国际机器学习和计算机应用相关技术研究的最新进展。 IEEE |第五届机器学习与计算机应…...

【网络安全】漏洞挖掘:IDOR实例

未经许可&#xff0c;不得转载。 文章目录 正文 正文 某提交系统&#xff0c;可以选择打印或下载passport。 点击Documents > Download后&#xff0c;应用程序将执行 HTTP GET 请求&#xff1a; /production/api/v1/attachment?id4550381&enamemId123888id为文件id&am…...

vue项目执行 cnpm install 报错证书过期的解决方案

拉下源码后执行依赖安装过程&#xff0c;报错 error Error: Certificate has expired&#xff0c;可以通过一下方发解决&#xff1a;npm config set strict-ssl false 再执行 cnpm 命令即可正常拉依赖...

XGboost的安装与使用

安装xgboost&#xff1a; conda install py-xgboost下载demo的数据&#xff1a; https://github.com/dmlc/xgboost 安装graphviz conda install python-graphviz数据 在demo/data里面&#xff1a; 训练集是&#xff1a;agaricus.txt.train、测试集是&#xff1a;agaricus…...

【AI趋势9】开源普惠

关于开源的问题&#xff0c;可以参考我之前的文章&#xff1a; 再说开源软件-CSDN博客 【AI】马斯克说大模型要开源&#xff0c;我们缺的是源代码&#xff1f;&#xff08;附一图看懂6大开源协议&#xff09;_分开源和闭源,我们要的当然是开源,马斯克开源。-CSDN博客 一、开…...

【Spark集群部署系列一】Spark local模式介绍和搭建以及使用(内含Linux安装Anaconda)

简介 注意&#xff1a; 在部署spark集群前&#xff0c;请部署好Hadoop集群&#xff0c;jdk8【当然Hadoop集群需要运行在jdk上】&#xff0c;需要注意hadoop&#xff0c;spark的版本&#xff0c;考虑兼容问题。比如hadoop3.0以上的才兼容spark3.0以上的。 下面是Hadoop集群部署…...

泛微OA 常用数据库表

HrmDepartment 人力资源部门 HrmSubCompany 人力资源分部 HrmResource 员工信息表 HrmRoles 角色信息表 T_Condition 报表条件 T_ConditionDetail 报表条件详细值 T_DatacenterUser 基层用户信息 T_FadeBespeak 调查退订表 T_fieldItem 调查项目表输入项信息 T_fieldItemDetail…...

宜佰丰超市进销存管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; JavaMysql 工具&#xff1a; IDEA/Eclipse、Navicat、Maven 系统展示 首页 管理员功能模块…...

生成Vue脚手架报错:npm error code ETIMEDOUT

遇到 ETIMEDOUT 错误通常表示你的 npm 请求在尝试连接到 npm 仓库&#xff08;如 https://registry.npmjs.org&#xff09;时超时了。这个问题通常与网络连接、代理设置或网络配置有关。以下是一些解决这个问题的步骤&#xff1a; 检查网络连接&#xff1a; 确保你的设备可以正…...

Readiness Probe可以解决应用启动慢造成访问异常的问题。

Readiness Probe可以解决应用启动慢造成访问异常的问题。 正确 错误 这句话是正确的。 ‌Readiness Probe确实可以解决应用启动慢造成的访问异常问题。‌ Readiness Probe&#xff0c;也称为就绪性探针&#xff0c;是Kubernetes中用于监控容器应用状态稳定性的重要机制之一。…...

第一批AI原住民开始变现:9岁小学生,用大模型写书赚1个w

前言 当人们正在观望&#xff0c;AI什么时候抢走自己的饭碗时&#xff0c;北京一名9岁的小学生在AI的帮助下写了一本小说&#xff0c;并赚到了2万元的版税。 这件看似不可思议的事&#xff0c;他是如何做到的&#xff1f;此外&#xff0c;他还带来一个启发&#xff1a;面对AI时…...

电路笔记(PCB):串扰的原理与减少串扰的几种方法

串扰 串扰&#xff08;Crosstalk&#xff09;是指在电路中&#xff0c;一条信号线上的电磁干扰不经意间耦合到另一条相邻的信号线上&#xff0c;从而影响其正常信号传输的现象。串扰会导致相邻信号线上的信号出现畸变或噪声&#xff0c;从而影响信号的完整性和电路的正常工作。…...

QT-监测文件内容重复工具)

QT-监测文件内容重复工具 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #include "widget.h" #include "ui_widget.h" #include <QDir> #include <QFile> #include <QCryptographicHash> #include <QApplicatio…...

振兴杯全国青年职业技能大赛信息通信网络线务员解决方案

一、引言 随着数字化时代的到来&#xff0c;信息技术的飞速发展正深刻改变着人们的生活与工作方式。智能楼宇作为这一时代的产物&#xff0c;以其提升生活和工作效率、改善居住和办公环境的特点&#xff0c;受到了广泛关注。智能安防作为智能楼宇的重要组成部分&#xff0c;其…...

Ai音频文件转文字工具 会议音频转文字 录音转文字提取工具 下载

工具基于Ai模型&#xff0c;进行语音音频转文字&#xff0c;进行文字提取&#xff0c;功能强大好用&#xff0c;识别准确率还不错 运行速度取决于音频文件的时长及电脑的性能&#xff0c;音频越长则需要的时间越长&#xff0c;耐心等待即可 使用视频示例如下&#xff1a; Ai语…...

深入理解Spring Boot日志框架与配置

目录 Spring Boot日志框架概述Spring Boot默认日志框架&#xff1a;Logback日志配置文件日志级别的调整日志输出配置日志格式化日志轮转和归档集成其他日志框架日志管理工具最佳实践总结 Spring Boot日志框架概述 Spring Boot 支持多种日志框架&#xff0c;如 Logback、Log4…...

WPF——动态排名图表实现

开发环境 VS2022 .NET 8.0 MVVM Toolkit 8.2.2 需求 开发中需要实现按照成绩动态指名&#xff0c;以展示当前的竞赛成绩的一个实时情况及变化。 即如下效果&#xff1a; 需求分析 按照接收到的信息&#xff0c;就是要将获取到的集合排序&#xff0c;并且要将排序前后的变…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...