爬取本地多个文件夹下html中ID号,时间、发送号码、接受号码,信息类型、文件类型、发送内容数据并写入mysql数据库
时间: 2023-12-23 11:02:45 浏览: 75
好的,以下是相应的代码示例:
```python
import os
from bs4 import BeautifulSoup
import mysql.connector
# 配置MySQL数据库连接
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'localhost',
'database': 'your_database_name',
'raise_on_warnings': True
}
# 连接MySQL数据库
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# 创建数据表(如果不存在)
create_table_query = """
CREATE TABLE IF NOT EXISTS messages (
id INT AUTO_INCREMENT PRIMARY KEY,
message_id VARCHAR(255),
timestamp DATETIME,
sender VARCHAR(255),
receiver VARCHAR(255),
message_type VARCHAR(255),
file_type VARCHAR(255),
content TEXT
)
"""
cursor.execute(create_table_query)
# 遍历文件夹
root_folder = 'your_root_folder_path'
for root, dirs, files in os.walk(root_folder):
for file in files:
if file.endswith('.html'):
file_path = os.path.join(root, file)
# 读取HTML文件内容
with open(file_path, 'r') as f:
html_content = f.read()
# 解析HTML数据
soup = BeautifulSoup(html_content, 'html.parser')
# 提取需要的数据
message_id = soup.find('div', class_='message-id').text.strip()
timestamp = soup.find('div', class_='timestamp').text.strip()
sender = soup.find('div', class_='sender').text.strip()
receiver = soup.find('div', class_='receiver').text.strip()
message_type = soup.find('div', class_='message-type').text.strip()
file_type = soup.find('div', class_='file-type').text.strip()
content = soup.find('div', class_='content').text.strip()
# 将数据写入MySQL数据库表
insert_query = """
INSERT INTO messages (message_id, timestamp, sender, receiver, message_type, file_type, content)
VALUES (%s, %s, %s, %s, %s, %s, %s)
"""
values = (message_id, timestamp, sender, receiver, message_type, file_type, content)
cursor.execute(insert_query, values)
# 提交事务
conn.commit()
# 关闭数据库连接
cursor.close()
conn.close()
```
在上述代码中,我们首先创建了一个名为`messages`的数据表,用于存储提取的数据。然后,遍历文件夹中的HTML文件,使用BeautifulSoup库解析HTML数据,并提取所需的ID号、时间、发送号码、接受号码、信息类型、文件类型和发送内容。最后,将提取的数据插入到MySQL数据库的`messages`表中。
请注意,上述代码仅提供了一个框架,您需要根据实际需要进行适当的修改和完善,包括提取具体的HTML元素和将数据写入数据库的具体实现。
希望能对您有所帮助!如有任何疑问,请随时提问。
阅读全文