python 获取网页表格的方法(多种方法汇总)

ops/2024/12/19 3:19:06/

我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,

就需要将表格获取下来并进行整理。

在Python中,获取网页表格的方法有多种,以下是一些常用的方法和库:

1. 使用Pandas的read_html

Pandas库提供了一个非常方便的函数read_html,它可以自动识别HTML中的表格并将其转换为DataFrame对象。

python">import pandas as pd# 从URL读取
dfs = pd.read_html('http://example.com/some_page_with_tables.html')# 从文件读取
dfs = pd.read_html('path_to_your_file.html')# 访问第一个DataFrame
df = dfs[0]

这个方法获取表格非常简单,而且解析数据也很方便,是比较常用的直接获取网页表格的方法。

2. 使用BeautifulSoup和pandas

如果你需要更细粒度的控制,可以使用BeautifulSoup来解析HTML,然后手动提取表格数据,并将其转换为pandas的DataFrame。

python">from bs4 import BeautifulSoup
import pandas as pd# 假设html_doc是你的HTML内容
html_doc = """
<table><tr><th>Column1</th><th>Column2</th></tr><tr><td>Value1</td><td>Value2</td></tr>
</table>
"""# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_doc, 'html.parser')# 提取表格
table = soup.find('table')# 提取表头
headers = [th.text for th in table.find_all('th')]# 提取表格数据
rows = []
for tr in table.find_all('tr')[1:]:  # 跳过表头cells = [td.text for td in tr.find_all('td')]rows.append(cells)# 创建DataFrame
df = pd.DataFrame(rows, columns=headers)

这个方法主要是遍历表格的各个部分,然后保存下来。这样的方法可以细化做调整,例如可以筛选掉一些不需要的内容之类的。

3. 使用lxml库

lxml是一个强大的XML和HTML解析库,它提供了XPath支持,可以用来提取复杂的HTML结构。

python">from lxml import html# 假设html_doc是你的HTML内容
html_doc = """
<table><tr><th>Column1</th><th>Column2</th></tr><tr><td>Value1</td><td>Value2</td></tr>
</table>
"""# 解析HTML
tree = html.fromstring(html_doc)# 使用XPath提取表格数据
rows = tree.xpath('//tr')# 提取表头
headers = [header.text_content() for header in rows[0].xpath('.//th')]# 提取表格数据
data = []
for row in rows[1:]:cells = [cell.text_content() for cell in row.xpath('.//td')]data.append(cells)# 创建DataFrame
df = pd.DataFrame(data, columns=headers)

4. 使用Scrapy框架

Scrapy是一个用于爬取网站并从页面中提取结构化数据的应用框架。它提供了一套完整的工具,可以用来处理复杂的爬虫任务。

python">import scrapyclass MySpider(scrapy.Spider):name = 'my_spider'start_urls = ['http://example.com/some_page_with_tables.html']def parse(self, response):for table in response.css('table'):for row in table.css('tr'):columns = row.css('td::text').getall()yield {'Column1': columns[0],'Column2': columns[1],}

5.使用Selenium的find_element获取

具体方法参考:
【Python】 使用Selenium获取网页表格的方法(find_element的方法)

这些方法各有优缺点,你可以根据你的具体需求和项目的复杂度来选择最合适的方法。

对于简单的表格提取,pd.read_html通常是最快捷的方法。

对于需要更复杂处理的情况,BeautifulSoup和lxml、selenium提供了更多的灵活性。而Scrapy则适用于大规模的爬虫项目。

在这里插入图片描述


http://www.ppmy.cn/ops/143066.html

相关文章

npm或yarn包配置地址源

三种方法 1.配置.npmrc 文件 在更目录新增.npmrc文件 然后写入需要访问的包的地址 2.直接yarn.lock文件里面修改地址 简单粗暴 3.yarn install 的时候添加参数 设置包的仓库地址 yarn config set registry https://registry.yarnpkg.com 安装&#xff1a;yarn install 注意…

ensp 静态路由配置

A公司有广州总部、重庆分部和深圳分部3个办公地点&#xff0c;各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3&#xff0c;为路由器配置静态路由&#xff0c;使所有计算机能够互相访问&#xff0c;实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…

【算法day14】二叉树:搜索树的递归问题

不好意思呀大家&#xff0c;昨天学校考试耽误了~ 来看今天的题目 题目引用 二叉搜索树的最小绝对差二叉搜索树中的众数二叉树的最近公共祖先 1.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个…

使用C#和OPenCV实现圆形检测

文章目录 霍夫变换使用 OpenCV 和 C# 实现圆形检测霍夫变换 在计算机视觉中,圆形检测是一个常见且有用的任务,特别是在物体识别、图像分析和图形处理等领域。OpenCV 是一个强大的开源计算机视觉库,它提供了许多工具来实现不同的图像处理功能,其中包括圆形检测。本文将介绍如…

Oracle 创建存储过程及调用测试示例

/* select * from NationalDiseases */ /* CREATE OR REPLACE PROCEDURE proc_NationalDiseases ( inp_no_str IN varchar2, v_st_result OUT sys_refcursor ) AS BEGIN DBMS_OUTPUT.PUT_LINE(传入参数&#xff1a;||inp_no_str); open v_st_result for sel…

报错:Method Not Allowed

当报错这个的时候就要注意了&#xff0c;自己的方法是否写对了&#xff01;&#xff01;&#xff01; 就像我的这个因为我的后端是put&#xff0c;所以这也是put&#xff0c;我报错就是因为这写了get&#xff0c;虽然页面是改变了&#xff0c;但是一刷新&#xff0c;就会原形毕…

scp命令

scp&#xff08;Secure Copy Protocol&#xff09;是一种用于在不同主机之间安全传输文件的命令。使用 scp 命令&#xff0c;你可以将文件从本地计算机复制到远程计算机&#xff0c;或者从远程计算机复制到本地计算机。 以下是 scp 命令的基本语法和一些示例&#xff1a; 基本…

【GoF23种设计模式】02_单例模式(Singleton Pattern)

文章目录 前言一、什么是单例模式&#xff1f;二、为什么要用单例模式&#xff1f;三、如何实现单例模式&#xff1f;总结 前言 提示&#xff1a;设计者模式有利于提高开发者的编程效率和代码质量&#xff1a; GoF&#xff08;Gang of Four&#xff0c;四人帮&#xff09;设计…