【Python爬虫】爬取名人名言页面并进行简单的数据清洗(入门级)
目录
资源链接
一、网站选择
二、数据爬取要求
三、数据清洗要求
四、实现代码
1.数据采集
2.数据清洗
资源链接
下面有笔者所放的源码下载链接,读者可自行下载:
链接:https://pan.baidu.com/s/1YmTdlnbSJLvLrrx92zz6Qg
提取码:wkk6
一、网站选择
scrapy官方提供的网站:Quotes to Scrape
二、数据爬取要求
使用requests库,获取1-10页的名人名言页面,获取名人名言和作者两项信息,结果存放到“名人名言.csv”文件中,并将文件保存在data目录下,如果目录不存在,则先创建目录.
三、数据清洗要求
读取“名人名言.csv”,数据列名为“名言”和“姓名”,删除数据项为空的数据,删除重复数据,增加“时间”列,数据为“2023-06”,结果存放到“清洗结果.csv”中,保存在data目录。
四、实现代码
1.数据采集
import requests # 导入用于发送HTTP请求的库
from bs4 import BeautifulSoup # 导入用于解析HTML的库
import csv # 导入用于处理CSV文件的库
import os # 导入用于进行操作系统相关操作的库# 定义函数 get_html,用于获取网页内容
def get_html(url, time=10):try:# 发送HTTP GET请求re = requests.get(url, timeout=time)# 设置编码re.encoding = re.apparent_encoding# 如果请求返回状态码不是200,抛出异常re.raise_for_status()return re.text # 返回网页内容except Exception as error:print(error) # 输出错误信息# 定义函数 parser,用于解析HTML内容并提取数据
def parser(html):soup = BeautifulSoup(html, "lxml") # 使用BeautifulSoup解析HTMLout_list = [] # 初始化存储结果的列表# 遍历所有符合条件的元素for row in soup.select(".quote"):text = row.select_one(".text").get_text(strip=True) # 提取名言文本author = row.select_one(".author").get_text(strip=True) # 提取作者名字out_list.append([text, author]) # 将结果添加到列表return out_list # 返回结果列表# 定义函数 save_csv,用于将数据保存到CSV文件中
def save_csv(item, path):directory = os.path.dirname(path) # 获取文件目录路径if not os.path.exists(directory): # 如果目录不存在os.makedirs(directory) # 创建目录# 以追加模式(a+)打开CSV文件with open(path, 'a+', newline='', encoding='utf-8') as f:csv_write = csv.writer(f) # 创建CSV写入对象csv_write.writerows(item) # 写入数据# 主程序
if __name__ == "__main__":# 遍历前10页for i in range(1, 11):url = "http://quotes.toscrape.com/page/{0}/".format(i) # 构造URLhtml = get_html(url) # 获取HTML内容out_list = parser(html) # 解析HTML并提取数据save_csv(out_list, "data/名人名言.csv") # 保存数据到CSV文件print("名人名言已保存到:data/名人名言.csv") # 输出提示信息
代码解释:
从一个名言网站 http://quotes.toscrape.com/
爬取名言数据,并保存到本地的 CSV 文件中:
-
导入必要的库:
requests
用于发送HTTP请求BeautifulSoup
用于解析HTMLcsv
用于处理CSV文件os
用于处理文件和目录
-
定义
get_html
函数:- 接受一个URL和超时时间参数,发送GET请求获取网页内容
- 请求成功则返回网页内容,否则打印错误信息
-
定义
parser
函数:- 接受HTML内容,使用BeautifulSoup解析HTML
- 从HTML中提取包含名言和作者信息的元素,存储在一个列表中并返回
-
定义
save_csv
函数:- 接受要保存的数据和目标文件路径
- 检查并创建存储目录(如果不存在)
- 以追加模式打开CSV文件,将数据写入文件
-
主程序执行部分:
- 遍历前10页,构造每个页面的URL
- 获取每个页面的HTML内容,解析并提取数据
- 将提取的数据保存到指定的CSV文件中
-
输出提示信息:
程序结束后,输出提示信息,告知数据已保存到特定位置
2.数据清洗
import pandas as pd # 导入用于数据处理的Pandas库# 定义函数 clean_data,用于清洗数据
def clean_data(input_path, output_path):# 读取CSV文件并指定列名为"名言"和"姓名",不使用文件的头部信息作为列名df = pd.read_csv(input_path, names=["名言", "姓名"], header=None, encoding='utf-8')# 删除包含缺失值的行df.dropna(inplace=True)# 删除重复的行df.drop_duplicates(inplace=True)# 添加新列"时间",赋值为固定时间"2023-06"df["时间"] = "2023-06"# 将处理后的数据保存到CSV文件中,不保存索引信息df.to_csv(output_path, index=False, encoding='utf-8')# 主程序执行部分
if __name__ == "__main__":input_file = "data/名人名言.csv" # 输入文件路径output_file = "data/清洗结果.csv" # 输出文件路径clean_data(input_file, output_file) # 调用clean_data函数进行数据清洗print("清洗后的数据已保存到:data/清洗结果.csv") # 输出提示信息
代码解释:
对输入的CSV文件进行处理后保存为新的CSV文件。
-
导入必要的库:
pandas
用于数据处理 -
定义
clean_data
函数:- 该函数接受输入文件路径和输出文件路径作为参数
- 使用Pandas读取CSV文件,指定列名为"名言"和"姓名",不使用文件头部信息作为列名
- 删除包含缺失值的行和重复行
- 添加新列"时间",所有行的值都设为"2023-06"
- 将清洗后的数据保存到输出文件中,不保存索引信息
-
主程序执行部分:
- 指定输入文件和输出文件的路径
- 调用
clean_data
函数,对数据进行清洗操作 - 输出提示信息,告知清洗后的数据已保存到特定位置
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
【Python爬虫】爬取名人名言页面并进行简单的数据清洗(入门级)
目录 资源链接 一、网站选择 二、数据爬取要求 三、数据清洗要求 四、实现代码 1.数据采集 2.数据清洗 资源链接 下面有笔者所放的源码下载链接,读者可自行下载: 链接:https://pan.baidu.com/s/1YmTdlnbSJLvLrrx92zz6Qg 提取码&…...
![](https://img-blog.csdnimg.cn/direct/f49e6dc778a4460181cebb0afb978126.png)
Microsoft Visual C++ Redistributable 【安装包】【高速下载】
方法1、可以从官方下载,如下图 Visual C Redistributable for Visual Studio 2015 但是此链接只有一个版本 方法2 已经下载好并且已经整理好了2008--2022的所有版本点击下方链接即可高速下载 如果是win7-win8-win10-win11直接可以下载2015--2022版本,…...
![](https://img-blog.csdnimg.cn/direct/73fc19a7f9a846fb9c44cc26133af8fb.png)
MFC绘制哆啦A梦
文章目录 OnPaint绘制代码完整Visual Studio工程下载其他卡通人物绘制 OnPaint绘制代码 CPaintDC dc(this); // 用于绘画的设备上下文CRect rc;GetWindowRect(rc);int cxClient rc.Width();int cyClient rc.Height();// 辅助线HPEN hPen CreatePen(PS_DOT, 1, RGB(192, 192,…...
![](https://img-blog.csdnimg.cn/direct/40f0c097a220485b90f67e71e80ed0c8.jpeg)
网络编程(TCP协议,UDP协议)
目录 网络编程三要素 IP IPv4 InetAddress类 端口号 协议 UDP协议 UDP协议发送数据 UDP协议接收数据 UDP的三种通信方式(代码实现) TCP协议 TCP通信程序 三次握手和四次挥手 练习 1、客户端:多次发送数据服务器:接收多次接收数据,并打印 2、客户端…...
![](https://www.ngui.cc/images/no-images.jpg)
读取Jar包下文件资源的问题及解决方案
问题 项目A代码调用到Resouces下的文件a.sh,打包成Jar包后,项目B调用对应方法时,出现报错,找不到a.sh文件路径,原来的代码可能是: URL resource getClass().getClassLoader().getResource("a.sh&qu…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ 反转一个二进制串
描述 一个32位有符号整数,用二进制编码来表示。现需要将该二进制编码按位反转,计算出反转后的值。 示例1 输入: 1 返回值: -2147483648 说明: 00000000 00000000 00000000 00000001 翻转后为 10000000 000000…...
![](https://img-blog.csdnimg.cn/img_convert/365dfaab2030f464ad08348246707450.png)
黑神话悟空-吉吉国王版本【抢先版】
在中国的游戏市场中,一款名为“黑神话悟空”的游戏引起了广泛的关注。这款游戏以中国传统的神话故事“西游记”为背景,创造了一个令人震撼的虚拟世界。今天,我们要来介绍的是这款游戏的一种特殊版本,那就是吉吉国王版本。 在吉吉国…...
![](https://img-blog.csdnimg.cn/img_convert/40bd5646e7613cfc18dec2c12af11f00.png)
【尚庭公寓SpringBoot + Vue 项目实战】预约看房与租约管理(完结)
【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结)1、业务说明2、接口开发2.1、预约看房管理2.1.1.保存或更新看房预约2.1.2. 查询个人预约…...
![](https://www.ngui.cc/images/no-images.jpg)
java拼图小游戏项目
创建一个Java拼图小游戏是一个有趣且富有教育意义的项目,可以锻炼你的编程技能。以下是开发一个基本拼图游戏可能需要考虑的几个步骤: 项目规划: 确定游戏的基本规则和玩法。设计游戏的界面和用户交互。 环境搭建: 确保你的开发环…...
![](https://img-blog.csdnimg.cn/direct/041dd1f0035442a9a2020cf639326eea.png)
[C++][数据结构][跳表]详细讲解
目录 0.什么是跳表?1.SkipList的优化思路2.SkipList的效率如何保证?3.SkipList实现4.SkipList VS 平衡搜索树 && Hash 0.什么是跳表? SkipList本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树…...
![](https://www.ngui.cc/images/no-images.jpg)
tinyxml
github下载相关的软件包,其中有四个文件需要主要需要关注就是分别是tinyxml12.cpp,tinyxml12.h,rss网页xml文件,还有就是官方给的test文件tinyxmltest.cpp。 example1就是提供一个打开文件的方式 int example_1() {XMLDocument …...
![](https://img-blog.csdnimg.cn/direct/699cb2a8fa6642108d679d7eb76478c8.png)
Docker(三)-Docker常用命令
1.run run命令执行流程:2.帮助启动类命令 2.1 启动docker systemctl start docker2.2 停止docker systemctl stop docker2.3 重启docker systemctl restart docker2.4查看docker状态 systemctl status docker2.5开机启动 systemctl enable docker2.6查看docker概要信息 …...
![](https://img-blog.csdnimg.cn/direct/bff7e5de270c47238de8955b25ad2fa7.png)
[MRCTF2020]PixelShooter
一个apk文件 jeb打开发现是apk文件 apk游戏逆向必须知道的知识: 一般关键数据在 Assets/bin/data/managed/assembly-csharp.dll这个文件里面 我不知道jeb为什么这里我没有 apk是个压缩包 直接解压 这个文件解压也可以发现flag {Unity_1S_Fun_233}...
![](https://img-blog.csdnimg.cn/direct/27ac270d9d874f4bb8b0ebdee2b30a11.png)
vue实现的商品列表网页
一、商品列表效果如下 二、代码; vue实现的商品列表网页 , 图片在vue项目的Public文件夹里的 imgs中 <template><div class"common-layout"><!-- el-container:外层容器。 当子元素中包含 <el-header> 或 <el-foo…...
![](https://www.ngui.cc/images/no-images.jpg)
【泛微系统】e-cology非标配功能概览
关于泛微非标功能的功能编号、功能名称及支持版本 编号名称支持版本001考勤功能4.500.0124-9.00+KB900190206002短信通用接口5.000.0327+KB50001003 及以上版本004计划任务接口5.0+KB50001003及以上版本005集成登录接口6.0及以上版本006流程中自定义浏览框5.0+KB50001003及以上…...
![](https://img-blog.csdnimg.cn/direct/d8225167d69c4e028830580b73447340.jpeg)
Python基础教程(二十八):pip模块
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
![](https://img-blog.csdnimg.cn/img_convert/6ea47576c21339178022ff4ced3af620.jpeg)
通信系统概述
1.定义 通信系统(也称为通信网络)是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展ÿ…...
![](https://img-blog.csdnimg.cn/direct/20b9ab904af146e5899695377cf634be.png)
http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解
文章目录 HTTP/0.9HTTP/1.0HTTP/1.1队头阻塞(Head-of-Line Blocking)1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 HTTP/0.9 发布时间:1991年 特点: 只支持 GET 方法没有 HTTP 头部响应中只有 HTML 内容࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
Hadoop 面试题(四)
1. 简述Hadoop节点的动态上线下线的大概操作 ? 在Hadoop集群中,节点的动态上下线指的是在不停止整个集群服务的情况下,添加或移除节点。这种能力对于维护和扩展集群非常重要。以下是Hadoop节点动态上线下线的大概操作步骤: 动态…...
![](https://img-blog.csdnimg.cn/direct/de4c71c31f54448385b4c4da41044db1.jpeg)
绽放光彩的小程序 UI 风格
绽放光彩的小程序 UI 风格...
![](https://img-blog.csdnimg.cn/direct/2ddda2e4d53844b6b442c96e24113e08.png)
电脑文件夹怎么加密?文件夹加密的5种方法
在数字化时代,信息安全显得尤为重要。对于个人电脑用户来说,文件夹加密是一种有效保护隐私和数据安全的方法。本文将介绍五种文件夹加密的方法,帮助您更好地保护自己的重要文件。 如何设置文件夹密码方法一:利用Windows系统自带的…...
![](https://img-blog.csdnimg.cn/img_convert/6e1880ed63b21b77281553a4db37ea59.png)
异步复位同步释放
目录 描述 输入描述: 输出描述: 参考代码 描述 题目描述: 请使用异步复位同步释放来将输入数据a存储到寄存器中,并画图说明异步复位同步释放的机制原理 信号示意图: clk为时钟 rst_n为低电平复位 d信号输入…...
![](https://img-blog.csdnimg.cn/direct/3f70d5e184db4bffad91e948d3b625f2.png)
JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式
在 JupyterLab 中,可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持,使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…...
![](https://img-blog.csdnimg.cn/direct/b6a09d8425a0402ab63d722dc7628d27.png)
docker 环境部署
1.Redis部署 用docker拉取redis镜像 docker pull redis 用docker查看拉取的镜像版本号,这里查到的是 6.2.6 版本 docker inspect redis 通过wget指令下载对应版本的tar包,下载完成后解压 wget https://download.redis.io/releases/redis-6.2.6.tar.gz …...
![](https://www.ngui.cc/images/no-images.jpg)
Spring中的ContextPath总结
Spring中的ContextPath总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. ContextPath的概念 在Spring中,ContextPath是指Web应用程序的上下文…...
![](https://img-blog.csdnimg.cn/direct/07f9321607de46e689034d23d5f04219.png)
C++设计模式——Composite组合模式
一,组合模式简介 真实世界中,像企业组织、文档、图形软件界面等案例,它们在结构上都是分层次的。将系统分层次的方式使得统一管理和添加不同子模块变得容易,在软件开发中,组合模式的设计思想和它们类似。 组合模式是…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg2.imgtp.com%2F2024%2F05%2F27%2FecnWy72K.jpg&pos_id=img-7R2o989d-1718991877996)
Android提供的LruCache类简介(1)
* If your cached values hold resources that need to be explicitly released, * override {link #entryRemoved}. * 如果你cache的某个值需要明确释放,重写entryRemoved() * If a cache miss should be computed on demand for the corresponding keys, * ov…...
![](https://img-blog.csdnimg.cn/img_convert/a08571f736dc04b5bef51cd09e8e3a0a.gif#pic_center)
【分布式系列】分布式锁timeout了怎么办?
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
![](https://www.ngui.cc/images/no-images.jpg)
System.getProperty()方法总结
System.getProperty()方法总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!System.getProperty()方法是Java中用于获取系统属性的方法之一。它允许我们访问J…...
![](https://img-blog.csdnimg.cn/direct/d7b0ecab0c5b4ae79cbc57783bdbbaf5.png)
大型语言模型在AMD GPU上的推理优化
Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型(LLMs)已经改变了自然语言处理和理解,促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的…...
![](https://static.oschina.net/uploads/space/2017/0424/133909_4BUa_200350.png)
潍坊做网站建设/网络营销的实现方式包括
2019独角兽企业重金招聘Python工程师标准>>> http://www.yiibai.com/python/python_quick_guide.html 转载于:https://my.oschina.net/u/200350/blog/885930...
![](https://img-blog.csdnimg.cn/20201231082214508.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NjUzNDM3,size_16,color_FFFFFF,t_70)
网站建设最贵服务商/bt兔子磁力搜索引擎最新版
参考链接: numpy.floor 函数功能: 对输入的多维数组逐元素进行向下取整.实验代码展示: Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "…...
wordpress 文档在线浏览/福州seo建站
远程服务调用在实际的项目中很常用,在多重方式中,HTTP应该算是比较常用的,对客户端来说也很方便 但是spring http invoker只支持JAVA语言,结构简单,只依赖与spring框架本身。 首先我们来看服务端(依赖于W…...
![](https://img-blog.csdnimg.cn/369bc7fae6f14eae93112e9b66e7ff5c.png)
跨境电商东莞网站建设/什么是网站推广
English Learning - L1-6 从此口语变得简约(下)2022.12.22 周四引言6.2.2 分词非谓语动词作后置定语的三种被动结构1. to be done 将来的动作2. being done 正在进行的3. done 已经完成的6.2.3 分词形容词挑错其它1. 形容词 名词 ed2. 数词 名词 ed答…...
![](https://www.oschina.net/img/hot3.png)
网站的二次开发是什么意思/云服务器免费
2019独角兽企业重金招聘Python工程师标准>>> 1、有时候tomcat虚拟主机在在自建目录文件docBase里,重启无法启动的: 注释:Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本…...
![](https://images0.cnblogs.com/blog/54346/201307/12083411-dccb87efe0e5435e9b8cd97391321ecb.png)
廊坊做网站哪家好/必应搜索引擎地址
一 背景 最近在园子了浏览了几篇有关Socket文章,得到了一些启发萌生了想要重构公司在2000年用.NET Framework 2.0 与 Visual Studio 2005开发的AsySocket项目为了希望能够尽快的了解公司这个项目,Google了很多国内外的网站让我对Socket有了更深层次的了解…...