简易 Python 爬虫实现,10min可完成带效果源码

目录

准备工作

编写爬虫代码

运行爬虫

查看结果

遇到的问题及解决

总结


前言和效果

本文记录了使用 Python 实现一个简单网页爬虫的过程,目标是爬取 quotes.toscrape.com 的名言和作者,并将结果保存到文本文件。以下是完整步骤,包含环境配置、依赖安装和代码运行。
网站截图:

爬取到的内容截图如下: 

准备工作
  1. 激活 Anaconda 虚拟环境
    我的 Python 环境基于 Anaconda,使用的虚拟环境是 SRCNN(路径:D:\Anaconda\envs\SRCNN)。首先,需要激活该环境:

conda activate SRCNN

运行后,命令行前缀变为 (SRCNN),表示成功切换到虚拟环境。

  1. 安装依赖包
    爬虫需要两个库:requests(发送 HTTP 请求)和 beautifulsoup4(解析 HTML)。在 SRCNN 环境中安装:

conda install requests beautifulsoup4

安装报错了,原因是未关闭科学上网,后关闭了这两个包就装好了。报错如下:
关闭科学上网后重新安装

安装完成后,命令行显示安装成功的提示。

  1. 验证安装
    为确保 beautifulsoup4 正确安装在 SRCNN 环境中,运行以下命令检查:

pip show beautifulsoup4

输出显示模块版本为 4.12.2,安装路径为 D:\Anaconda\envs\SRCNN\Lib\site-packages,确认安装正确。

编写爬虫代码,完整代码:

以下是爬虫代码(pac.py),用于爬取 quotes.toscrape.com 的名言和作者,并保存到 quotes.txt

import requests
from bs4 import BeautifulSoup# 目标网页
url = "http://quotes.toscrape.com/"try:# 发送 HTTP 请求response = requests.get(url)response.raise_for_status()  # 检查请求是否成功# 解析 HTMLsoup = BeautifulSoup(response.text, "html.parser")# 提取名言和作者quotes = soup.find_all("div", class_="quote")results = []for quote in quotes:text = quote.find("span", class_="text").get_text()author = quote.find("small", class_="author").get_text()results.append({"quote": text, "author": author})# 保存到文件with open("quotes.txt", "w", encoding="utf-8") as f:for item in results:f.write(f"Quote: {item['quote']}\nAuthor: {item['author']}\n\n")print("爬取完成,结果已保存到 quotes.txt")except requests.RequestException as e:print(f"请求错误: {e}")
except Exception as e:print(f"发生错误: {e}")

代码说明:

  • 使用 requests.get 获取网页内容。

  • BeautifulSoup 解析 HTML,提取 class="quote"<div> 元素。

  • 提取每条名言(class="text")和作者(class="author"),保存到 quotes.txt

目标网站:
Quotes to Scrape

运行爬虫

SRCNN 环境中运行代码:

D:\Anaconda\envs\SRCNN\python.exe D:/YAN/pythonProject/PaChong/pac.py

运行后,程序输出“爬取完成,结果已保存到 quotes.txt”,表示成功。

查看结果

爬取结果保存在 D:/YAN/pythonProject/PaChong/quotes.txt,内容为每条名言及其作者。

遇到的问题及解决

最初运行时,提示 ModuleNotFoundError: No module named 'bs4',因为 beautifulsoup4 安装在 Anaconda 全局环境(D:\Anaconda\Lib\site-packages)而非 SRCNN 环境。解决方法是激活 SRCNN 环境并重新安装:

conda activate SRCNN
conda install beautifulsoup4

此外,确认 requests 已安装,避免类似错误。

总结

通过以上步骤,我成功实现了一个简单的 Python 爬虫:

  • 激活 SRCNN 虚拟环境。

  • 安装 requestsbeautifulsoup4

  • 编写并运行爬虫代码,爬取名言并保存到文本文件。

这个过程熟悉了 Anaconda 虚拟环境管理和爬虫开发,适合初学者参考。未来可扩展功能,如处理多页爬取或应对反爬机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【KWDB 创作者计划】_上位机知识篇---Docker容器

文章目录 前言1. Docker 容器是什么&#xff1f;隔离性轻量级可移植性可复用性 2. Docker 核心概念镜像容器仓库Dockerfile 3. Docker 基本使用(1) 安装 Docker(2) 容器生命周期管理(3) 镜像管理(4) 进入容器内部(5) 数据持久化&#xff08;挂载卷&#xff09;(6) 网络管理 4. …

树莓派练习

1.守护进程 守护进程含义&#xff1a;守护进程在树莓派上电后开始运行&#xff0c;断电后结束运行的进程&#xff0c;即使你的终端退出也不会停止&#xff0c;我们可以手动关闭它 使用nohup创建守护进程 先创建一个c语言文件&#xff08;long_task.c&#xff09; #include …

详细解释浏览器是如何渲染页面的?

渲染流程概述 渲染的目标&#xff1a;将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后&#xff0c;会产生一个渲染任务&#xff0c;并将其传递给渲染主线程的消息队列。在事件循环机制的作用下&#xff0c;渲染主线程取出消息队列中的渲染任务&#xff0…

java+postgresql+swagger-多表关联insert操作(九)

入参为json&#xff0c;然后根据需要对多张表进行操作&#xff1a; 入参格式&#xff1a; {"username": "车主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…

JavaSpring 中使用 Redis

创建项目 配置 Redis 服务地址 创建 Controller 类 由于当前只是些简单的测试代码&#xff0c;所以就不进行分层了&#xff0c;只创建一个 Controller 来实现 jedis 通过 jedis 对象里的各种方法来操作 Redis 此处通过 StringRedisTemplate 来操作 Redis 最原始提供的类是 Re…

AI文生图工具推荐

一、AI文生图技术实现原理 AI文生图&#xff08;Text-to-Image&#xff09;基于生成对抗网络&#xff08;GAN&#xff09;或扩散模型&#xff08;Diffusion Model&#xff09;实现&#xff0c;通过深度学习将文本描述转化为图像。其核心流程包括&#xff1a; 文本编码&#xf…

数据结构——快排和归并排序(非递归)

快速排序和归并排序一般都是用递归来实现的&#xff0c;但是掌握非递归也是很重要的&#xff0c;说不定在面试的时候面试官突然问你快排或者归并非递归实现&#xff0c;递归有时候并不好&#xff0c;在数据量非常大的时候效率就不好&#xff0c;但是使用非递归结果就不一样了&a…

【笔记】网络安全管理

计算机硬件中,运算器和控制器通常集成在一块芯片内,一般称为()。 数据库DB、数据库系统DBS、数据库管理系统DBMS,三者之间的关系是()。 OSI/RM体系结构中的网络层与TCP/IP体系结构中的()功能相同。 三级系统应按照等保2.0要求采用密码技术通信过程中数据的()。 …

.net core web api 数据验证(DataAnnotations)

目录 一、什么是 DataAnnotations&#xff1f; 二、扩展验证逻辑&#xff08;自定义验证器&#xff09; 一、什么是 DataAnnotations&#xff1f; DataAnnotations 是一组特性&#xff08;Attributes&#xff09;&#xff0c;用于在模型类上定义验证规则。主要用于属性级别的…

小白从0学习网站搭建的关键事项和避坑指南

以下是针对小白从零学习网站搭建时需要注意的关键事项和避坑指南&#xff0c;帮助你高效学习、少走弯路&#xff1a; 一、学习路径注意事项 不要跳过基础 误区&#xff1a;直接学习框架&#xff08;如 React、Laravel&#xff09;而忽视 HTML/CSS/JS 基础。 正确做法&#xff…

深入剖析JavaScript内存泄漏:识别、定位与实战解决

在JavaScript的世界里&#xff0c;开发者通常不必像使用C那样手动管理内存的分配和释放&#xff0c;这得益于JavaScript引擎内置的垃圾回收&#xff08;Garbage Collection, GC&#xff09;机制。然而&#xff0c;这并不意味着我们可以完全忽视内存管理。“自动"不等于&qu…

2025-04-19 Python 强类型编程

文章目录 1 方法标注1.1 参数与返回值1.2 变参类型1.3 函数类型 2 数据类型2.1 内置类型2.2 复杂数据结构2.3 类别选择2.4 泛型 3 标注方式3.1 注释标注3.2 文件标注 4 特殊情形4.1 前置引用4.2 函数标注扩展4.3 协变与逆变4.4 dataclass 5 高级内容5.1 接口5.2 泛型的协变/逆变…

ETF价格相关性计算算法深度分析

1. 引言 在金融市场中&#xff0c;相关性就像是资产之间“跳舞”的默契程度。想象一下两位舞者&#xff08;ETF&#xff09;&#xff0c;有时步伐一致&#xff0c;有时各跳各的。对于管理大规模资金的投资组合而言&#xff0c;准确理解ETF之间的“舞步同步性”对于风险管理、资…

上海人工智能实验室:LLM无监督自训练

&#x1f4d6;标题&#xff1a;Genius: A Generalizable and Purely Unsupervised Self-Training Framework For Advanced Reasoning &#x1f310;来源&#xff1a;arXiv, 2504.08672 &#x1f31f;摘要 &#x1f538;推进LLM推理技能引起了广泛的兴趣。然而&#xff0c;当前…

【WPF】 在WebView2使用echart显示数据

文章目录 前言一、NuGet安装WebView2二、代码部分1.xaml中引入webview22.编写html3.在WebView2中加载html4.调用js方法为Echarts赋值 总结 前言 为了实现数据的三维效果&#xff0c;所以需要使用Echarts&#xff0c;但如何在WPF中使用Echarts呢&#xff1f; 一、NuGet安装WebV…

2025年3月 Python编程等级考试 2级真题试卷

2025年3月青少年软件编程Python等级考试&#xff08;二级&#xff09;真题试卷 题目总数&#xff1a;37 总分数&#xff1a;100 选择题 第 1 题 单选题 老师要求大家记住四大名著的作者&#xff0c;小明机智地想到了可以用字典进行记录&#xff0c;以下哪个选项的字典…

6. 话题通信 ---- 使用自定义msg,发布方和订阅方cpp,python文件编写

1)在功能包下新建msg目录&#xff0c;在msg目录下新建Person.msg,在Person.msg文件写入&#xff1a; string name uint16 age float64 height 2)修改配置文件 2.1) 功能包下package.xml文件修改 <build_depend>message_generation</build_depend><exec_depend…

多线程使用——线程安全、线程同步

一、线程安全 &#xff08;一&#xff09;什么是线程安全问题 多个线程&#xff0c;同时操作同一个共享资源的时候&#xff0c;可能会出现业务安全的问题。 &#xff08;二&#xff09;用程序摹拟线程安全问题 二、线程同步 &#xff08;一&#xff09;同步思想概述 解决线…

4. 话题通信 ---- 发布方和订阅方cpp文件编写

本节对应赵虚左ROS书籍的2.1.2 以10hz,发布消息和消息的订阅 1) 在功能包的src文件夹下&#xff0c;新建cpp文件&#xff0c;并且写入 #include "ros/ros.h" #include "std_msgs/String.h" int main(int argc, char *argv[]) {setlocale(LC_ALL,"&…

有哪些哲学流派适合创业二

好的&#xff0c;让我们更深入地探讨如何将‌哲学与数学‌深度融合&#xff0c;构建一套可落地的创业操作系统。以下从‌认知框架、决策引擎、执行算法‌三个维度展开&#xff0c;包含具体工具和黑箱拆解&#xff1a; ‌一、认知框架&#xff1a;用哲学重构商业本质‌ 1. ‌本体…