Python 解析 HTML 并提取表格数据存入数据库

```html Python 解析 HTML 并提取表格数据存入数据库

Python 解析 HTML 并提取表格数据存入数据库

在现代数据处理和分析中,从网页上提取结构化数据是一个常见的需求。HTML 表格是许多网站用来展示信息的一种常见方式。本文将介绍如何使用 Python 从 HTML 文件中解析表格,并将提取的数据存储到数据库中。

所需工具

  • BeautifulSoup: 用于解析 HTML 文档并提取数据。
  • sqlite3: Python 内置的轻量级数据库模块,适合小型项目。

步骤概述

  1. 加载 HTML 文件。
  2. 使用 BeautifulSoup 解析 HTML 并提取表格数据。
  3. 连接到 SQLite 数据库。
  4. 将提取的数据插入数据库。
  5. 关闭数据库连接。

代码实现


import sqlite3
from bs4 import BeautifulSoup

def extract_table_data(html_file):
    # 加载 HTML 文件
    with open(html_file, 'r', encoding='utf-8') as file:
        html_content = file.read()

    # 使用 BeautifulSoup 解析 HTML
    soup = BeautifulSoup(html_content, 'html.parser')
    table = soup.find('table')

    # 提取表格数据
    data = []
    rows = table.find_all('tr')
    for row in rows:
        cols = row.find_all('td')
        cols = [col.text.strip() for col in cols]
        if cols:
            data.append(cols)

    return data

def save_to_database(data, db_name='data.db'):
    # 连接到 SQLite 数据库
    conn = sqlite3.connect(db_name)
    cursor = conn.cursor()

    # 创建表(如果不存在)
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS extracted_data (
            column1 TEXT,
            column2 TEXT,
            column3 TEXT
        )
    ''')

    # 插入数据
    cursor.executemany('INSERT INTO extracted_data VALUES (?, ?, ?)', data)

    # 提交更改并关闭连接
    conn.commit()
    conn.close()

if __name__ == '__main__':
    html_file = 'example.html'
    data = extract_table_data(html_file)
    save_to_database(data)
    print("数据已成功保存到数据库!")
    

详细说明

首先,我们需要使用 BeautifulSoup 来解析 HTML 文件。在这个例子中,我们假设 HTML 文件包含一个表格。通过调用 soup.find('table') 方法,我们可以找到第一个 <table> 标签。

接下来,我们遍历表格的所有行(<tr>),然后提取每行中的单元格(<td>)。我们将每个单元格的内容提取出来并去除多余的空白字符。

最后,我们将提取的数据存储到 SQLite 数据库中。我们首先检查数据库中是否存在名为 extracted_data 的表,如果不存在则创建它。然后使用 cursor.executemany() 方法将所有数据插入到表中。

总结

通过结合 BeautifulSoup 和 SQLite,我们可以轻松地从 HTML 文件中提取表格数据并将其存储到数据库中。这种方法适用于需要从网页抓取数据的小型项目。对于更复杂的场景,可能需要考虑使用更强大的框架如 Scrapy。

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值