这是标准的tr 、td格式
<table>
<tr>
<td>第一行第一列</td>
<td>第一行第二列</td>
</tr>
<tr>
<td>第二行第一列</td>
<td>第二行第二列</td>
</tr>
<tr>
<td>第三行第一列</td>
<td>第三行第二列</td>
</tr>
</table>
这是通用的写法,两次for循环
from bs4 import BeautifulSoup
import csv
# 打开HTML文件并用BeautifulSoup解析
with open('天气预报.html', 'r', encoding='utf-8') as f:
soup = BeautifulSoup(f.read(), 'lxml')
# 使用CSS选择器选取所有表格行
rows = soup.select('div.hanml tr')
# 创建一个CSV文件并准备写入数据
with open('output.csv', mode='w', newline='', encoding='gbk') as csvfile:
csvwriter = csv.writer(csvfile)
# 遍历每个表格行
for row in rows:
# 查找行中的所有单元格并过滤掉含有 rowsPan 类的 <td> 元素
cells = row.select('td')
# 构建一个空列表 row_data 用于存储单元格文本内容
row_data = []
# 遍历每个单元格
for cell in cells:
# 获取单元格的文本内容,并去除首尾空白字符
cell_text = cell.get_text(strip=True)
# 将单元格文本内容添加到 row_data 列表中
row_data.append(cell_text)
# 将 row_data 列表写入CSV文件的一行
csvwriter.writerow(row_data)