Pandas作为数据科学领域鳌头独占的利器,有着丰富多样的函数,能实现各种意想不到的功能。

作为学习者没办法一次性掌握Pandas所有的方法,需要慢慢积累,多看多练。

这次为大家介绍一个非常实用且神奇的函数-read_html(),它可免去写爬虫的烦恼,自动帮你抓取静态网页中的表格。

简单用法:pandas.read_html(url)

主要参数:

  • io:接收网址、文件、字符串
  • header:指定列名所在的行
  • encoding:The encoding used to decode the web page
  • attrs:传递一个字典,用其中的属性筛选出特定的表格

只需要传入url,就可以抓取网页中的所有表格,抓取表格后存到列表,列表中的每一个表格都是dataframe格式。

我们先简单抓取天天基金网的基金净值表格,目标url:http://fund.eastmoney.com/fund.html

可以看到上面html里是table表格数据,刚好适合抓取。

import pandas as pd
url = "http://fund.eastmoney.com/fund.html"
data = pd.read_html(url,attrs = {'id': 'oTable'})
# 查看表格数量
tablenum = len(data)
print(tablenum)

输出:1

通过'id': 'oTable'的筛选后,只有一个表格,我们直接爬取到了基金净值表。

data[1]

但这里只爬取了第一页的数据表,因为天天基金网基金净值数据每一页的url是相同的,所以read_html()函数无法获取其他页的表格,这可能运用了ajax动态加载技术来防止爬虫。

附:一般来说,一个爬虫对象的数据一次展现不完全时,就要多次展示,网站的处理办法有两种: 1、下一个页面的url和上一个页面的url不同,即每个页面的url是不同的,一般是是序号累加,处理方法是将所有的html页面下载至本地,从而拿到所有数据;(天天基金网显示不是这种类型) 2、下一个页面的url和上一个页面的url相同,即展示所有数据的url是一样的,这样的话网页上一般会有“下一页”或“输入框”与“确认”按钮,处理方法是将代码中触发“下一页”或“输入框”与“确认”按钮点击事件来实现翻页,从而拿到所有数据。(天天基金网是这种类型)

刚只是简单地使用了read_html()获取web表格的功能,它还有更加复杂的用法,需要了解其参数含义。

详细用法

pandas.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: str, path object 或 file-like objectURL,file-like对象或包含HTML的原始字符串。请注意,lxml仅接受http,ftp和文件url协议。如果您的网址以'https'您可以尝试删除's'。
match: str 或 compiled regular expression, 可选参数将返回包含与该正则表达式或字符串匹配的文本的表集。除非HTML非常简单,否则您可能需要在此处传递非空字符串。默认为“。+”(匹配任何非空字符串)。默认值将返回页面上包含的所有表。此值转换为正则表达式,以便Beautiful Soup和lxml之间具有一致的行为。
flavor: str 或 None要使用的解析引擎。 ‘bs4’和‘html5lib’彼此同义,它们都是为了向后兼容。默认值None尝试使用lxml解析,如果失败,它会重新出现bs4+html5lib。
header: int 或 list-like 或 None, 可选参数该行(或MultiIndex)用于创建列标题。
index_col: int 或 list-like 或 None, 可选参数用于创建索引的列(或列列表)。
skiprows: int 或 list-like 或 slice 或 None, 可选参数解析列整数后要跳过的行数。从0开始。如果给出整数序列或切片,将跳过该序列索引的行。请注意,单个元素序列的意思是“跳过第n行”,而整数的意思是“跳过n行”。
attrs: dict 或 None, 可选参数这是属性的词典,您可以传递该属性以用于标识HTML中的表。在传递给lxml或Beautiful Soup之前,不会检查它们的有效性。但是,这些属性必须是有效的HTML表属性才能正常工作。例如, attrs = {'id': 'table'} 是有效的属性字典,因为‘id’ HTML标记属性是任何HTML标记的有效HTML属性,这个文件。 attrs = {'asdf': 'table'} 不是有效的属性字典,因为‘asdf’即使是有效的XML属性,也不是有效的HTML属性。可以找到有效的HTML 4.01表属性这里。可以找到HTML 5规范的工作草案这里。它包含有关现代Web表属性的最新信息。
parse_dates: bool, 可选参数参考read_csv()更多细节。
thousands: str, 可选参数用来解析成千上万个分隔符。默认为','。
encoding: str 或 None, 可选参数用于解码网页的编码。默认为NoneNone保留先前的编码行为,这取决于基础解析器库(例如,解析器库将尝试使用文档提供的编码)。
decimal: str, 默认为 ‘.’可以识别为小数点的字符(例如,对于欧洲数据,请使用“,”)。
converters: dict, 默认为 None用于在某些列中转换值的函数的字典。键可以是整数或列标签,值是采用一个输入参数,单元格(而非列)内容并返回转换后内容的函数。
na_values: iterable, 默认为 None自定义NA值。
keep_default_na: bool, 默认为 True如果指定了na_values并且keep_default_na为False,则默认的NaN值将被覆盖,否则将附加它们。
displayed_only: bool, 默认为 True是否应解析具有“display:none”的元素。

最后, read_html() 仅支持静态网页解析,你可以通过其他方法获取动态页面加载后response.text 传入 read_html() 再获取表格数据。

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

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

相关文章

vLLM与SGLang在自然语言处理领域的技术架构与性能对比研究

随着大语言模型在工业界和学术界的广泛应用,高效推理框架的选择成为自然语言处理领域的关键挑战。vLLM与SGLang作为当前最前沿的推理优化框架,分别通过创新的PagedAttention和RadixAttention机制展现了独特的技术优势。本文将系统对比两大框架的核心架构…

楼宇自动化:Modbus 在暖通空调(HVAC)中的节能控制(二)

Modbus 在 HVAC 节能控制中的应用案例案例一:某商业建筑 HVAC 系统节能改造某大型商业建筑,总建筑面积达 5 万平方米,涵盖了购物中心、餐饮区和娱乐场所等多种功能区域 。改造前,其 HVAC 系统采用传统的控制方式,设备之…

win10安装Elasticsearch

1 启动elasticsearch 下载地址:Download Elasticsearch | Elastic 双击elasticsearch.bat elasticsearch黑窗口启动乱码问题解决方案 到 config 文件下找到 jvm.options 文件 打开后 在文件末尾空白处 添加 -Dfile.encodingGBK 保存后重启即可。 启动后输入&am…

[Meetily后端框架] Whisper转录服务器 | 后端服务管理脚本

第七章:Whisper转录服务器 欢迎回来! 到目前为止,我们已经深入探索了"meeting-minutes"项目的"大脑"——Python后端。 我们已经了解了它如何通过后端API网关接收文本转录,使用摘要数据结构(Pyd…

Azure-ADF 抽取数据

1,Azure 访问地址 1,国际版 https://portal.azure.com/#homehttps://portal.azure.com/#home2,世纪互联中国版 Microsoft Azure 由世纪互联运营https://portal.azure.cn/2,创建资源组并且所有的后续组件都是再此资源下面创建。 3,创建Data Factory 工具 4,核心组件 1. 管…

django queryset 去重

在Django中,使用QuerySet时,如果你想要对查询结果进行去重(即去除重复的记录),你可以使用几种不同的方法。这里列出了一些常见的方法: 使用distinct() distinct()方法用于返回QuerySet中不重复的唯一对象。…

WIFI MTU含义 ,协商修改的过程案例分析

WIFI MTU含义 ,协商修改的过程案例分析 文章目录 **WIFI MTU含义 ,协商修改的过程案例分析****一、WIFI MTU的含义****二、MTU协商修改的过程案例分析****1. TCP/IP协议中的MTU协商****2. 蓝牙(BLE)中的MTU协商****3. 网络设备配置中的MTU调整****三、协商修改的注意事项**…

记一次Android Studio编译报错:Execution failed for task ‘:app:compileDebugAidl‘

问题背景: android studio导入AIDL文件的时候编译提示: Execution failed for task :app:compileDebugAidl. > A failure occurred while executing com.android.build.gradle.tasks.AidlCompile$AidlCompileRunnable > com.android.ide.common.process.ProcessEx…

selenium跳转到新页面时如何进行定位

在 Selenium 中,当你跳转到新页面(例如通过点击链接、提交表单或 JavaScript 重定向)时,通常会遇到页面加载或窗口切换的问题。为了在新页面上继续进行页面定位操作,你需要确保以下几点:✅ 1. 等待页面加载…

QT——QComboBox组合框控件

QComboBox概述QComboBox是Qt框架中提供的组合框控件,它结合了按钮和下拉列表的功能,允许用户从预定义的选项列表中选择一个或多个项目。基本特性特性描述显示方式显示当前选中项,点击后展开下拉列表编辑能力可设置为可编辑或不可编辑项目类型…

CentOS 安装jenkins笔记

1. 安装 Java。目前一般jdk要求11以上,否则会报错2. 手动添加 Jenkins 仓库先创建一个专门的Jenkins文件夹:mkdir jenkins然后 执行 sudo curl -fsSL https://pkg.jenkins.io/redhat/jenkins.io.key -o /etc/pki/rpm-gpg/jenkins.io.key 然后&#xff0…

C#枚举:从基础到高级的全方位解析

C#枚举:从基础到高级的全方位解析 在 C# 编程中,枚举(Enum)是一种特殊的值类型,用于定义命名的常量集合,它为代码提供了更强的类型安全、可读性和可维护性。从简单的状态标识到复杂的位运算组合&#xff0c…

[spring6: Resource ResourceLoader ResourceEditor]-加载资源

Resource Resource 接口为处理和访问不同类型资源(如文件、URL、输入流等)提供了统一的 API,支持资源的存在性检查、读取、转换等操作。 public interface Resource extends InputStreamSource {boolean exists();default boolean isReadable…

Spring Boot - Spring Boot 集成 MyBatis 分页实现 PageHelper

一、PageHelper 概述 PageHelper 是一个优秀的 MyBatis 分页插件&#xff0c;可以方便地在 Spring Boot 项目中使用 MyBatis 结合 PageHelper 实现分页功能二、PageHelper 引入 1、依赖引入 pom.xml <properties>...<postgresql.verison>42.5.6</postgresql.ver…

jenkins自动化部署前端vue+docker项目

文章目录一、准备工作二、编写dockerfile文件三、新建jenkins任务一、准备工作 默认你的服务器centos已经搭建完成&#xff0c;同时已经安装了jenkins和docker。 接下来去下载开源项目ruoyi并上传到自己的gitee中。 二、编写dockerfile文件 打开项目工程&#xff0c;在rouy…

opencv中contours的使用

一 Contour FindingContours使用 STL-style vector<> 表示&#xff0c;如 vector<cv::Point>, vector<cv::Point2f>。opencv中&#xff0c;使用函数 cv::findContours() 寻找contours&#xff0c; 具体函数定义如下&#xff1a;void cv::findContours(cv::In…

网络安全初级

1、docker并配置代理 &#xff08;1&#xff09;在Ubuntu中安装docker apt-get install docker.io docker-compose &#xff08;2&#xff09;安装完成后&#xff0c;进入/etc/systemd/system/docker.service.d/http-proxy.conf配置文件下进行代理的配置&#xff0c;配置如图…

JetBrains IDE 性能优化指南:idea.vmoptions 核心参数解析与配置建议

文章目录深入解析 JetBrains IDE 的 VM 选项&#xff1a;idea.vmoptions 参数详解一、内存与垃圾回收配置二、诊断与错误处理三、运行时优化参数四、模块系统与反射控制五、特殊参数说明六、配置建议指南深入解析 JetBrains IDE 的 VM 选项&#xff1a;idea.vmoptions 参数详解…

Datawhale AI夏令营 《基于带货视频评论的用户洞察挑战赛》Part .1.

1. 赛题 参赛者需要构建端到端的评论分析系统&#xff0c;完成三大核心任务&#xff1a; 商品识别 输入&#xff1a;视频描述文本(video_desc)和标签(video_tags)输出&#xff1a;精准识别推广商品名称(Xfaiyx Smart Translator/Recorder) 多维情感分析 维度&#xff1a;情感倾…

【博文汇项目全维度测试报告:功能与自动化双轨验证】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 项目背景:项目背景与意义&#xff1a;项目概述已实现的主要功能包括&#xff1a;当前系统存在的不足…