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

【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 文件中:

  1. 导入必要的库

    • requests 用于发送HTTP请求
    • BeautifulSoup 用于解析HTML
    • csv 用于处理CSV文件
    • os 用于处理文件和目录
  2. 定义 get_html 函数

    • 接受一个URL和超时时间参数,发送GET请求获取网页内容
    • 请求成功则返回网页内容,否则打印错误信息
  3. 定义 parser 函数

    • 接受HTML内容,使用BeautifulSoup解析HTML
    • 从HTML中提取包含名言和作者信息的元素,存储在一个列表中并返回
  4. 定义 save_csv 函数

    • 接受要保存的数据和目标文件路径
    • 检查并创建存储目录(如果不存在)
    • 以追加模式打开CSV文件,将数据写入文件
  5. 主程序执行部分

    • 遍历前10页,构造每个页面的URL
    • 获取每个页面的HTML内容,解析并提取数据
    • 将提取的数据保存到指定的CSV文件中
  6. 输出提示信息

    程序结束后,输出提示信息,告知数据已保存到特定位置

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文件。

  1. 导入必要的库

    pandas 用于数据处理
  2. 定义 clean_data 函数

    • 该函数接受输入文件路径和输出文件路径作为参数
    • 使用Pandas读取CSV文件,指定列名为"名言"和"姓名",不使用文件头部信息作为列名
    • 删除包含缺失值的行和重复行
    • 添加新列"时间",所有行的值都设为"2023-06"
    • 将清洗后的数据保存到输出文件中,不保存索引信息
  3. 主程序执行部分

    • 指定输入文件和输出文件的路径
    • 调用 clean_data 函数,对数据进行清洗操作
    • 输出提示信息,告知清洗后的数据已保存到特定位置

相关文章:

【Python爬虫】爬取名人名言页面并进行简单的数据清洗(入门级)

目录 资源链接 一、网站选择 二、数据爬取要求 三、数据清洗要求 四、实现代码 1.数据采集 2.数据清洗 资源链接 下面有笔者所放的源码下载链接,读者可自行下载: 链接:https://pan.baidu.com/s/1YmTdlnbSJLvLrrx92zz6Qg 提取码&…...

Microsoft Visual C++ Redistributable 【安装包】【高速下载】

方法1、可以从官方下载,如下图 Visual C Redistributable for Visual Studio 2015 但是此链接只有一个版本 方法2 已经下载好并且已经整理好了2008--2022的所有版本点击下方链接即可高速下载 如果是win7-win8-win10-win11直接可以下载2015--2022版本&#xff0c…...

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,…...

网络编程(TCP协议,UDP协议)

目录 网络编程三要素 IP IPv4 InetAddress类 端口号 协议 UDP协议 UDP协议发送数据 UDP协议接收数据 UDP的三种通信方式(代码实现) TCP协议 TCP通信程序 三次握手和四次挥手 练习 1、客户端:多次发送数据服务器:接收多次接收数据,并打印 2、客户端…...

读取Jar包下文件资源的问题及解决方案

问题 项目A代码调用到Resouces下的文件a.sh,打包成Jar包后,项目B调用对应方法时,出现报错,找不到a.sh文件路径,原来的代码可能是: URL resource getClass().getClassLoader().getResource("a.sh&qu…...

C++ 反转一个二进制串

描述 一个32位有符号整数,用二进制编码来表示。现需要将该二进制编码按位反转,计算出反转后的值。 示例1 输入: 1 返回值: -2147483648 说明: 00000000 00000000 00000000 00000001 翻转后为 10000000 000000…...

黑神话悟空-吉吉国王版本【抢先版】

在中国的游戏市场中,一款名为“黑神话悟空”的游戏引起了广泛的关注。这款游戏以中国传统的神话故事“西游记”为背景,创造了一个令人震撼的虚拟世界。今天,我们要来介绍的是这款游戏的一种特殊版本,那就是吉吉国王版本。 在吉吉国…...

【尚庭公寓SpringBoot + Vue 项目实战】预约看房与租约管理(完结)

【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结)1、业务说明2、接口开发2.1、预约看房管理2.1.1.保存或更新看房预约2.1.2. 查询个人预约…...

java拼图小游戏项目

创建一个Java拼图小游戏是一个有趣且富有教育意义的项目,可以锻炼你的编程技能。以下是开发一个基本拼图游戏可能需要考虑的几个步骤: 项目规划: 确定游戏的基本规则和玩法。设计游戏的界面和用户交互。 环境搭建: 确保你的开发环…...

[C++][数据结构][跳表]详细讲解

目录 0.什么是跳表?1.SkipList的优化思路2.SkipList的效率如何保证?3.SkipList实现4.SkipList VS 平衡搜索树 && Hash 0.什么是跳表? SkipList本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树…...

tinyxml

github下载相关的软件包,其中有四个文件需要主要需要关注就是分别是tinyxml12.cpp,tinyxml12.h,rss网页xml文件,还有就是官方给的test文件tinyxmltest.cpp。 example1就是提供一个打开文件的方式 int example_1() {XMLDocument …...

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概要信息 …...

[MRCTF2020]PixelShooter

一个apk文件 jeb打开发现是apk文件 apk游戏逆向必须知道的知识: 一般关键数据在 Assets/bin/data/managed/assembly-csharp.dll这个文件里面 我不知道jeb为什么这里我没有 apk是个压缩包 直接解压 这个文件解压也可以发现flag {Unity_1S_Fun_233}...

vue实现的商品列表网页

一、商品列表效果如下 二、代码&#xff1b; vue实现的商品列表网页 &#xff0c; 图片在vue项目的Public文件夹里的 imgs中 <template><div class"common-layout"><!-- el-container:外层容器。 当子元素中包含 <el-header> 或 <el-foo…...

【泛微系统】e-cology非标配功能概览

关于泛微非标功能的功能编号、功能名称及支持版本 编号名称支持版本001考勤功能4.500.0124-9.00+KB900190206002短信通用接口5.000.0327+KB50001003 及以上版本004计划任务接口5.0+KB50001003及以上版本005集成登录接口6.0及以上版本006流程中自定义浏览框5.0+KB50001003及以上…...

Python基础教程(二十八):pip模块

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

通信系统概述

1.定义 通信系统&#xff08;也称为通信网络&#xff09;是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来&#xff0c;依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展&#xff…...

http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解

文章目录 HTTP/0.9HTTP/1.0HTTP/1.1队头阻塞&#xff08;Head-of-Line Blocking&#xff09;1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 HTTP/0.9 发布时间&#xff1a;1991年 特点&#xff1a; 只支持 GET 方法没有 HTTP 头部响应中只有 HTML 内容&#xff0…...

Hadoop 面试题(四)

1. 简述Hadoop节点的动态上线下线的大概操作 &#xff1f; 在Hadoop集群中&#xff0c;节点的动态上下线指的是在不停止整个集群服务的情况下&#xff0c;添加或移除节点。这种能力对于维护和扩展集群非常重要。以下是Hadoop节点动态上线下线的大概操作步骤&#xff1a; 动态…...

绽放光彩的小程序 UI 风格

绽放光彩的小程序 UI 风格...

5个实用技巧:用CaptfEncoder快速搞定网络安全编码任务

5个实用技巧&#xff1a;用CaptfEncoder快速搞定网络安全编码任务 【免费下载链接】CaptfEncoder Captfencoder is opensource a rapid cross platform network security tool suite, providing network security related code conversion, classical cryptography, cryptograp…...

Perplexity Pro高阶用法深度解密:结合Obsidian/Notion实现知识自动蒸馏的完整链路(含可复用JSON Schema)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity Pro高阶用法深度解密&#xff1a;结合Obsidian/Notion实现知识自动蒸馏的完整链路&#xff08;含可复用JSON Schema&#xff09; Perplexity Pro 的 API 提供了结构化响应能力&#xff0c;配…...

二维码坏了别着急扔!3步教你用QRazyBox免费修复损坏的二维码

二维码坏了别着急扔&#xff01;3步教你用QRazyBox免费修复损坏的二维码 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你有没有遇到过这样的情况&#xff1f;打印出来的二维码被水弄湿了&am…...

LRC Maker终极指南:5分钟掌握专业级歌词制作技巧

LRC Maker终极指南&#xff1a;5分钟掌握专业级歌词制作技巧 【免费下载链接】lrc-maker 歌词滚动姬&#xff5c;可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 你是否曾经为喜爱的歌曲找不到完美同步的歌词而烦恼&am…...

STM32F407移植EasyFlash:嵌入式Flash键值存储与磨损均衡实战

1. 项目概述&#xff1a;为什么要在STM32F407上折腾EasyFlash&#xff1f;最近在做一个基于STM32F407的物联网终端设备&#xff0c;功能上需要记录一些运行参数、用户配置&#xff0c;还得在意外断电后能恢复现场。最开始想着用片内Flash模拟EEPROM&#xff0c;自己写读写擦除逻…...

点云配准避坑指南:从理论到代码,详解点到面ICP中法线计算的‘坑’与线性近似的前提

点云配准实战&#xff1a;深入解析点到面ICP算法中的法线计算与线性近似陷阱 在三维重建和机器人定位领域&#xff0c;点云配准技术扮演着关键角色。当我们面对两个部分重叠的点云数据集时&#xff0c;如何精确地将它们对齐成为一个统一坐标系下的完整模型&#xff1f;迭代最近…...

8位字节的崛起:从历史必然到现代计算基石

1. 项目概述&#xff1a;从“为什么是8位”说起最近在整理一份关于计算机二进制表示的小册子时&#xff0c;被一个看似简单却直击核心的问题给问住了&#xff1a;“为什么我们今天用的计算机&#xff0c;尤其是x86架构&#xff0c;普遍采用8位作为一个字节&#xff08;Byte&…...

前端地图开发避坑指南:解决天地图、高德、百度坐标偏移的完整JS方案

前端地图开发避坑指南&#xff1a;解决天地图、高德、百度坐标偏移的完整JS方案 当你在物流轨迹系统中发现GPS设备采集的坐标在高德地图上偏离实际位置500米&#xff0c;或在门店选址工具里百度地图的围栏总是无法匹配真实建筑轮廓时&#xff0c;这背后隐藏着中国地图服务特有…...

告别枯燥协议!用Python脚本+逻辑分析仪实测JESD204B的F和K参数

告别枯燥协议&#xff01;用Python脚本逻辑分析仪实测JESD204B的F和K参数 在高速串行通信领域&#xff0c;JESD204B协议因其高效率而备受青睐&#xff0c;但抽象的参数定义常常让工程师望而生畏。本文将以一种全新的实践视角&#xff0c;带您通过Python脚本和逻辑分析仪&#x…...

3步高效下载抖音无水印视频:douyin_downloader专业解决方案完整指南

3步高效下载抖音无水印视频&#xff1a;douyin_downloader专业解决方案完整指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载&#xff1a;https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader …...