html 表格是网页中的数据,用 Pandas 读写网页中的 HTML 表格数据

本文介绍了如何使用Python的Pandas库从HTML文件和URL读取表格数据,包括处理需要身份验证的URL。此外,还展示了如何将DataFrame写入HTML文件以及如何通过设置可选参数自定义HTML表格的样式。
摘要由CSDN通过智能技术生成

介绍超文本标记语言(HTML)是用于构建网页的标准标记语言。我们可以使用HTML的

Programming LanguageCreatorYear

CDennis Ritchie1972PythonGuido Van Rossum1989RubyYukihiro Matsumoto1995

Area (sq.ft)

Price (USD)

12000

500

32000

700

Pandas 需要另一个名为lxml的库的帮助来解析HTML和XML文件。为了使read_html()函数正常工作,您需要安装lxml:$pip install lxml一旦安装了lmxl,我们就可以使用read_html()函数。它返回一个DataFrames列表,其中每个DataFrame是给定HTML文件的整个表元素。我们通过索引列表将每个表作为DataFrame进行读取。下面的代码演示了read_html()函数从HTML文件读取表的使用:import pandas as pd

tables = pd.read_html('table_data.html')

print('Tables found:', len(tables))

df1 = tables[0]  # Save first table in variable df1

df2 = tables[1]  # Saving next table in variable df2

print('First Table')

print(df1)

print('Another Table')

print(df2)注意:虽然您需要安装lxml,但无需将其导入程序中即可使Pandas正常工作。在Python解释器上运行以上代码将产生以下输出:Tables found: 2

First Table

Programming Language             Creator  Year

0                    C      Dennis Ritchie  1972

1               Python    Guido Van Rossum  1989

2                 Ruby  Yukihiro Matsumoto  1995

Another Table

Area (sq.ft)  Price (USD)

0         12000          500

1         32000          700从URL读取HTML数据正如我们从HTML文件中读取表元素一样,我们也可以使用read_html()将HTML网页中的表元素读取到DataFrame中。我们将提供以下URL:read_html('https://en.wikipedia.org/wiki/Python_(programming_language)')它将返回一个DataFrames列表,其中每个DataFrame代表给定URL中的一个表元素。以下是使用Pandas从网站URL读取表格元素的示例代码:import pandas as pd

tables = pd.read_html('https://en.wikipedia.org/wiki/Python_(programming_language)')

print('Tables found:', len(tables))

df1 = tables[0]  # Save first table in variable df1

print('First Table')

print(df1.head())  # To print first 5 rows如果我们成功运行了上面的代码,我们可以看到以下输出:Tables found: 10

First Table

0                                                  1

0             NaN                                                NaN

1        Paradigm  Multi-paradigm: functional, imperative, object...

2     Designed by                                   Guido van Rossum

3       Developer                         Python Software Foundation

4  First appeared                              1991; 29 years ago[1]从需要身份验证的URL读取HTML数据现在我们知道可以从网站上读取表格元素。但是,当站点需要身份验证时,代码会遇到以下异常:raise HTTPError(req.full_url, code, msg, hdrs, fp)

urllib.error.HTTPError: HTTP Error 401: UNAUTHORIZED要从此类URL读取数据,我们将使用请求模块。您可以使用pip安装它:$pip install requests现在,如果站点需要身份验证,我们将使用请求库中的get()方法向网站URL发出请求,同时提供可选的auth参数。此方法从网页返回响应对象。我们可以检查状态码(以确保内容肯定存在)并从响应对象获取文本,然后将表转换为DataFrame。让我们看一个使用请求获取需要身份验证的数据的示例。为此,我们使用https://httpbin.org:import requests

r = requests.get('https://httpbin.org/basic-auth/john/johnspassword', auth=('john', 'johnspassword'))

print(r.status_code)

print(r.text)执行上面的代码后,我们可以看到以下输出:200

{

"authenticated": true,

"user": "john"

}这表明我们成功访问了经过身份验证的URL的网页内容。但是,此网站仅包含JSON数据,我们需要HTML表格元素作为DataFrames。让我们继续使用以前的URL,并使用请求将HTML表读取为DataFrames。与以前的站点是公共站点时相比,访问经过身份验证的内容的步骤是相同的。得到响应后,可以将r.text传递给read_html()方法。和往常一样,我们将获得它包含为DataFrames的表的列表:import pandas as pd

import requests

# Can use auth parameter for authenticated URLs

r = requests.get('https://en.wikipedia.org/wiki/Python_(programming_language)',

auth=('john', 'johnspassword'))

tables = pd.read_html(r.text)

print('Tables found:', len(tables))

df1 = tables[0]

print('First Table')

print(df1.head())运行此代码将生成以下输出:Tables found: 10

First Table

0                                                  1

0             NaN                                                NaN

1        Paradigm  Multi-paradigm: functional, imperative, object...

2     Designed by                                   Guido van Rossum

3       Developer                         Python Software Foundation

4  First appeared                              1991; 29 years ago[1]用Python的Pandas编写HTML表我们已经成功地从HTML表中读取了数据。让我们在HTML文件中编写Pandas DataFrame。这可以通过使用to_html()方法来实现。to_html()采用要将数据导出到的文件的路径。如果不提供绝对路径,则会保存相对于当前目录的文件。您可以将DataFrame导出到HTML表,如下所示:import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

df.to_html('write_html.html')此代码将在当前目录中生成以下文件write_html.html:

AB

013124请注意,导出不是整个HTML文档,而是HTML表本身。用Python的Pandas编写样式化的HTML表如我们所见,默认情况下,表格边框为1,对齐方式正确,并且在标记中也具有DataFrame索引。我们可以通过提供一些可选参数来更改此默认结构。隐藏索引如果我们不想在表输出中包括索引,可以在to_html()中设置index = False:import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

df.to_html('write_html.html', index=False)此代码产生具有以下内容的write_html.html文件:

AB

1324更改表格边框表格的默认边框是1像素。要更改此默认设置,我们可以将border参数设置为以像素为单位的值。以下代码将边框更改为3个像素值:import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

df.to_html('write_html.html', border=3)现在,生成的文件将表的border属性设置为“ 3”:

AB

013124对齐文字默认情况下,表格的标题文本是右对齐的。我们使用justify参数更改此对齐方式。例如,执行justify =“ center”将添加style =“ text-align:center;”在标记的标记中。让我们尝试将标题文本对齐到中心并查看结果:import pandas as pd

df = pd.DataFrame({'A': [1, 'AAA'], 'B': ['BBB', 4]})

df.to_html('write_html.html', justify='center')

上面的代码创建的表如下所示:

AB

01BBB1AAA4现在,表格标题的文本与中心对齐。结论在本教程中,我们学习了如何使用Pandas DataFrames导入和导出HTML表数据。我们从文件以及从网页URL加载HTML表数据。对于经过身份验证的URL,我们使用了请求模块来对站点数据进行身份验证和检索,然后将响应文本传递到read_html()函数中。我们还使用to_html()函数将 Pandas DataFrame 编写为HTML文件。然后,我们通过传递一些可选参数(例如index,border和justify)来对生成的表进行样式设置。这使得以呈现方式写入DataFrame的数据变得容易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值