python从tr、td中拿文字并存入csv

发布时间 2024-01-04 21:18:23作者: Magiclala

这是标准的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)