python获取数据存到数据库mysql里

不说废话直接上代码 ,看代码分析 在代码里我写了详细的 注释!!!

# 导入所需库
import requests
from bs4 import BeautifulSoup
import mysql.connector
from mysql.connector import Error

# MySQL数据库配置
db_config = {
    'host': '127.0.0.1',  # 数据库主机地址
    'user': 'root',  # 数据库用户名
    'password': '1016',  # 数据库用户密码
    'database': 'test1'  # 要连接的数据库名
}

def store_table_data_in_mysql(data_list, column_count):
    connection = None
    try:
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            db_info = connection.get_server_info()
            print(f"已连接到MySQL服务器版本 {db_info}")

            cursor = connection.cursor()
            # 修改表名为Clay13
            create_table_sql = f"""
            CREATE TABLE IF NOT EXISTS Clay13(
                id INT AUTO_INCREMENT PRIMARY KEY,
                {', '.join(['column{}'.format(i+1) + ' VARCHAR(255)' for i in range(column_count)])}
            )
            """
            cursor.execute(create_table_sql)
            connection.commit()

            # 更新插入数据的表名为Clay13
            placeholders = ', '.join(['%s'] * column_count)
            insert_sql = f"INSERT INTO Clay13 ({', '.join(['column{}'.format(i+1) for i in range(column_count)])}) VALUES ({placeholders})"

            for item in data_list:
                cursor.execute(insert_sql, item)
                connection.commit()

            print("数据插入成功")
        else:
            print("无法连接到MySQL服务器")
    except Error as e:
        print(f"发生错误:'{e}'")
    finally:
        if connection is not None and connection.is_connected():
            cursor.close()
            connection.close()
            print("MySQL连接已关闭")
# 目标网页URL
url = "https://yjsc.xjnu.edu.cn/2023/0919/c419a126195/page.htm"

# 发送HTTP请求获取网页内容
response = requests.get(url)

try:
    # 解码响应内容
    content = response.content.decode('utf-8')
except UnicodeDecodeError:
    print("解码错误,尝试使用其他编码")
else:
    # 使用BeautifulSoup解析HTML
    soup = BeautifulSoup(content, 'html.parser')
    # 查找tbody标签
    tbody = soup.find('tbody')
    
    # 如果找到了tbody,进一步提取表格数据
    if tbody:
        rows = tbody.find_all('tr')  # 找到所有行
        data_to_store = []  # 创建数据列表用于存储表格数据
        column_count = 0  # 计算表格的列数

        # 遍历每一行,提取并清理单元格文本
        for row in rows:
            cells = row.find_all('td')  # 找到该行中的所有单元格
            # 根据实际列数调整下面的代码
            column_count = max(column_count, len(cells))
            row_data = ['' if cell is None else cell.get_text(strip=True) for cell in cells]
            data_to_store.append(row_data)

        # 存储数据到MySQL
        store_table_data_in_mysql(data_to_store, column_count)
    else:
        print("没有找到tbody标签")

# 注意:上述代码中的`store_table_data_in_mysql`函数和数据插入部分假设了一个具体的表结构。
# 你需要根据实际表格的列数和数据类型调整`CREATE TABLE`语句和`INSERT INTO`语句中的字段定义及占位符。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值