利用Pandas进行高效网络数据获取

利用Pandas进行高效网络数据获取

背景:

​ 最近看到一篇关于使用Pandas模块进行爬虫的文章,觉得很有趣,这里为大家详细说明。

基础铺垫:

pd.read_html pandas 库中的一个函数,用于从 HTML 页面中读取表格数据并返回一个包含 DataFrame 对象的列表。那么说明是表格数据呢,就是table标签的,如下图!

​ 我们可以使用XPath快速判断当前页面是否具有使用Pandas进行爬虫的前提条件。

在这里插入图片描述

pd.read_html(io, match=‘.+’, flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, thousands=‘,’, encoding=None, decimal=‘.’, converters=None, na_values=None, keep_default_na=True, displayed_only=True)

参数说明:

  • io: 接受的输入数据,可以是一个 HTML 字符串、一个 URL、一个文件路径或一个文件对象。
  • match (可选): 一个正则表达式,用于匹配要提取的表格的 HTML 属性。
  • flavor (可选): 解析器的名称,例如 'html5lib''lxml''html.parser' 等。
  • 其他参数:例如 headerindex_colskiprows 等参数用于控制读取表格数据的方式和格式。

案例实战:

pd.read_html 函数会尝试从输入数据中提取所有的表格,并返回一个包含 DataFrame 对象的列表,就是一个列表里存在多个dataframe类型,每个 DataFrame 对象对应一个表格。

import pandas as pd# 从 HTML 页面中读取表格数据
url = 'https://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/profit/index.phtml?p=1'
tables = pd.read_html(url)print(tables,type(tables),len(tables))
# 选择第一个表格的 DataFrame 对象
df = tables[0]
# 打印 DataFrame
print('---------------------------------------')
print(df,type(df))

在这里插入图片描述

在这里插入图片描述

​ 那么如果爬取多页呢? 写个for循环,然后使用concat拼接起来,不会拼接的看一下我不久前写的博客。

import pandas as pddata_list = []
for i in range(1, 6):url = f'https://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/profit/index.phtml?p={i}'data = pd.read_html(url)[0] # 这里注意提取 返回的是一个列表data_list.append(data) # 每一个data都是一个dataframe类型print("个数为",len(data_list))
# 合并数据
df = pd.concat(data_list,ignore_index=True)
print(df.head())
# 保存到本地 
df.to_csv("profit.csv",index=False)

看一下结果:

在这里插入图片描述

在这里插入图片描述

细节问题:

这里还要注意一个问题,有的时候还要设置一下编码,可能爬下来的是乱码,如下:

在这里插入图片描述

设置一下编码方式即可。

df = pd.read_html(url,encoding='utf-8')[0]
print(df.head())

如果大家想深层了解为什么有的时候需要设置,有的时候不需要设置,你要需要看这个响应回来的编码格式。

在这里插入图片描述

在这里插入图片描述

温馨提示:

​ 本文提供的内容仅供学习和研究目的,请在合法和道德的框架内使用所获取的知识和技巧。在进行网络爬虫活动时,请遵守相关法律法规,并尊重网站的使用条款和隐私政策。确保在进行任何爬取操作之前获得合适的授权,并确保不会给目标网站或他人造成不必要的干扰或损害。

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

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

相关文章

2.如何设置vscode可以搜索node_modules里的内容

在setting.json里添加 {"search.exclude": {"**/node_modules":false},"search.useIgnoreFiles":false }1.将**/node_modules设为false,从而禁用缺省行为,从而支持node_modules目录的检索 对于许多项目而言,将…

数据库 基础面试第一弹

1. SQL语句类型 1. DDL(Data Definition Language,数据定义语言): DDL语句用于定义数据库对象(如表、索引、视图等)。常见的DDL语句包括: CREATE:用于创建数据库对象,如…

【网络安全 | Misc】Training-Stegano-1

该题考察winhex工具使用 打开文件: 使用StegSolve并不能获取有效信息 使用winhex得到flag steganoI

【Linux系统化学习】进程终止的奥秘

个人主页点击直达:小白不是程序媛 Linux专栏:Liunx系统化学习 代码仓库:Gitee 目录 获取函数返回值 退出码 进程退出的场景 错误码 信号终止异常代码 进程的终止 main函数直接return exit函数 _exit函数 获取函数返回值 在C语言学…

玩转区域流量调配,详细解析GLSB是什么?

在互联网早期,由于网络不是很发达,流量也相对比较小,单体架构已经能足够满足需求。但伴随着互联网越来越,网站的流量请求甚至能达到上千亿。为了实现高可用,需要用到多台机器来提升处理流量的能力。在这种环境下&#…

RocketMQ连接报错RemotingConnectException: connect to <192.168.57.129:9876>解决

文章目录 前言一、RocketMQ 连接报错处理1.1 报错信息1.2 修改 broker.conf 文件1.3 Linux 开放端口1.4 项目启动成功 前言 上一篇文章:基于SpringBoot整合RocketMQ异步发送短信功能在项目启动的过程中报了 RocketMQ 连接错误。针对这个问题,本文给予记…

HBase 创建不分裂的表 ( 禁止 Table Split )

注意:由于 HBase 版本众多,配置表的语法在不同版本上会有差异,本文介绍的配置方法是在 1.4.9 版本上测试的,使用 HBase 2.0 的版本需要核实并修改相关配置方法! 有时候,出于特殊需要,我们希望对…

Vuex介绍2

续上一个的Vuex今天继续介绍 4 核心概念-getters 除了state之外,优势还需要从state中派生一些状态,这些状态时依赖state的,此时会用到getters 例如:state中定义了list,为1-10的数组,组件中,需…

PIE-Engine简介

PIE-Engine,是航天宏图基于云计算、物联网、大数据和人工智能技术自主研发的一站式地球科学大数据实时计算平台,平台构建了基于云原生的并行高效底层架构,助力地球科学应用的产业化发展。(摘自官网) 前天,我…

web前端开发网页制作html/css结课作业

效果图展示: 注意事项: 引用JQuery文件地址和图片地址要更换一下。 百度网盘链接: http://链接:https://pan.baidu.com/s/1wYkmLr7csjBwQY6GmlYm4Q?pwd4332 提取码:4332 html界面展示: main.css代码部…

写给工作6年的程序员的一封信

准大牛 ;兄, 希望你不会反感我给你的这个特别的称号,我们程序员中的大部分工作到5~6年这个节骨眼上,不出意外的话…准大牛…了,此时的你技术能力正在成熟或者已然成熟;架构设计力初现峥嵘;创新能…

当技术相遇:DevOps之道解析

目录 前言 持续集成/持续交付(CI/CD) 容器化和编排工具 监控和日志管理 云服务 前言 DevOps是一种软件开发和运维(Development Operations)的方法论,旨在通过促进开发团队和运维团队之间的合作与沟通&#xff0c…

C++ 结构体(面向对象编程)

面向对象编程的优势 相比于分而治之的结构化程序设计,强调大处着眼的面向对象程序设计的思想,更适合于开发大型软件。得益于数据抽象、代码复用等面象对象的固有特征,软件开发的效率获得极大的提升,成本却大幅降低。 面向对象三…

Linux中磁盘管理与文件系统

目录 一.磁盘基础: 1.磁盘的结构: 2.硬盘的数据结构: 3.硬盘存储容量 : 4.硬盘接口类型: 二.MBR与磁盘分区: 1.MBR的概念: 2.硬盘的分区: 为什么分区: 2.表示&am…

10-让Java性能提升的JIT深度剖析

文章目录 JVM的语言无关性解释执行与JITC1、C2与Graal编译器C1编译器C2编译器 分层编译(了解即可)热点代码热点探测方法调用计数器回边计数器 编译优化技术方法内联锁消除标量替换逃逸分析技术逃逸分析的原理逃逸分析 JVM的语言无关性 跨语言(语言无关性&#xff0…

浅谈技术架构的演进过程

前言 最近在学习Redis、Doctor相关技术知识,它们与分布式系统有着很大的关系。 而对于分布式系统,它本身就是随着业务的不断推进,技术架构不断演进而得到发展和实现的。而所谓的分布式系统,实际上就是想办法引入更多的硬件资源&am…

python 异步Web框架sanic

我们继续学习Python异步编程,这里将介绍异步Web框架sanic,为什么不是tornado?从框架的易用性来说,Flask要远远比tornado简单,可惜flask不支持异步,而sanic就是类似Flask语法的异步框架。 github&#xff1…

系统学习Python——装饰器:函数装饰器-[装饰器状态保持方案:外层作用域和全局变量]

分类目录:《系统学习Python》总目录 闭包函数(带有外围def作用域引用和嵌套的def)常常可以实现相同的效果,特别是用于像被装饰的最初咱数这样的静态数据时。然而在下面这个例子中,我们也需要外层作用域中的一个计数器&…

{MySQL} 数据库约束 表的关系 新增删除 修改 查询

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数据库约束1.1约束类型:1.2 NULL约束1.3unique 唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束1.6 FOREIGN K…

Kaggle:数据科学竞赛的殿堂与个人成长的舞台

一、产品简介: 它是一个举办数据科学竞赛、托管数据库、编写和分享代码的在线平台。这个数据集就像一个超级大的信息库,包含了我们日常生活中的各种事情,比如电子游戏的销量啊,还有空气质量如何受到污染等等。这些信息都是现实中…