利用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 pd

data_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())

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

在这里插入图片描述

在这里插入图片描述

温馨提示:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MacBook查看本机IP

嘚吧嘚 其实这也不是什么困难的问题,但是今年刚刚入坑Mac,外加用的频率不是很高,每次使用的时候都查,用完就忘,下次用的时候再查🤮。真的把自己恶心坏了🙈。 所以写篇文章记录一下&#x1f92…

Java学习——设计模式——结构型模式1

文章目录 结构型模式代理模式适配器模式 结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来…

uniapp多级动态表单规则

最近有个新的业务、主要涉及多层级的动态表单提交,其中又涉及很多类型,踩了很多坑之后,终于研发完毕。 传来的数据格式处理 传来的数据格式涉及比较多的内容,以下举例一个,涉及到规则的填写 规则写法有两种&#xff…

[足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch12 Robotic …

Android MVC 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 Controller:负责业务逻辑 持有关系: 1、View 持有 Controller 2、Controller 持有 Model 3、Model 持有 View 辅助工具:ViewBinding 执行流程:View >…

【Python排序算法系列】—— 选择排序

​ 🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 选择排序 过程演示: 选择排序实现代码: 分析选择排序&#xff1a…

Word 将页面方向更改为横向或纵向

文章目录 更改整个文档的方向更改部分页面的方向方法1:方法2: 参考链接 更改整个文档的方向 选择“布局”>“方向”,选择“纵向”或“横向”。 更改部分页面的方向 需要达到下图结果: 方法1: 选:中你要在横向页面…

6130 树的最长路

思路:树的最长路问题可以通过两次 DFS 求解,具体思路如下: 1.第一次 DFS 求树的直径 以任意一个点为起点进行深度优先遍历(DFS),找到与该点距离最远的点 u 。 以 u 为起点进行 DFS ,找到与 u 距…

计算机网络复习5

传输层——端到端 文章目录 传输层——端到端功能传输层的寻址与端口UDPTCPTCP连接管理TCP可靠传输TCP流量控制TCP拥塞控制网络拥塞的处理 功能 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同…

nodejs+vue+ElementUi农产品团购销售系统zto2c

目标是为了完成小区团购平台的设计和实现,在疫情当下的环境,方便小区业主购入生活所需,减小居民的生活压力 采用B/S模式架构系统,开发简单,只需要连接网络即可登录本系统,不需要安装任何客户端。开发工具采…

jmeter之beanshell使用:常用变量汇总

1.变量--日期 使用场景:当入参日期是变量,取当前日期 使用如下: (1)当前日期 import java.text.SimpleDateFormat; import java.util.Date;// 创建 SimpleDateFormat 对象并指定日期格式 SimpleDateFormat dateFor…

Seata AT TM->RC->RM一次完整的交互过程

原理 TM两阶段: 阶段1:TM向TC申请全局事务,netty客户端发起了一次记录xid的请求 阶段2:TC协调之后,决定执行RM是否提交或者回滚。 spring公共组件部分 1、SeataAutoConfiguration类 利用springboot自动装配机制从…

Ubuntu 安装MySQL以及基本使用

前言 MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。 安装…

使用Vscode远程debug报错找不到Module找不到File

1..报第一个错 提示我无法导入自己写的module 如图: 解决办法: stackoverflow上说的在launch.json中加了一条 env,就解决了。 "env": { "PYTHONPATH":"/home/zt/ge-sc-master/ge-sc-master"}, 2.解决完第一个…

Mysql5.7主从数据库同步失败(日记文件错误)解决记录

记录一次Mysql主从数据库同步失败(日记文件错误)解决记录 查看同步状态: 具体错误: 检查mysql数据库日记 2021-06-10T03:45:43.522398Z 1 [ERROR] Error reading packet from server for channel : event read from binlog did not pass crc check; the…

【HarmonyOS开发】案例-记账本开发

OpenHarmony最近一段时间,简直火的一塌糊度,学习OpenHarmony相关的技术栈也有一段时间了,做个记账本小应用,将所学知识点融合记录一下。 1、记账本涉及知识点 基础组件(Button、Select、Text、Span、Divider、Image&am…

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)

1、宽字节注入 sqllabs-less-32为例 使用单引号进行测试 提示我们输入的单引号被转义符 \ 进行了转义,即转义符自动的出现在输入的特殊字符前面,这是防止sql注入的一种方法,导致无法产生报错。 这种情况我们就可以尝试宽字节注入&#xff…

报表控件FastReport VCL 中的新 S3 传输 (Amazon)

在本文中,我们将探讨新的 S3 传输。从功能上来说,S3 与大多数人习惯使用的有很大不同,因此在本文的开头,我们将详细介绍它的主要功能。 FastReport .NET 是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全…

数据结构--二叉搜索树的实现

目录 1.二叉搜索树的概念 2.二叉搜索树的操作 二叉搜索树的插入 中序遍历(常用于排序) 二叉搜索树的查找 二叉搜索树的删除 完整二叉树代码: 二叉搜索树的应用 key/value搜索模型整体代码 1.二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一…

亚信安慧AntDB数据并行加载工具的实现(一)

1.概述 数据加载速度是评判数据库性能的重要指标,能否提高数据加载速度,对文件数据进行并行解析,直接影响数据库运维管理效率。基于此,AntDB分布式数据库提供了两种数据加载方式: 一是类似于PostgreSQL的Copy命令&am…