You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python网页爬取CSV写入问题:如何实现数据逐行存储

问题解决:网页爬取后逐行写入CSV

你的代码存在几个关键问题,导致所有数据集中在单个单元格:

  1. 在遍历h2标签的循环内直接将DOM对象转为文本,破坏了后续节点操作,且每次循环用w模式打开文件会覆盖之前的内容。
  2. 未将提取到的文本拆分为单独条目,直接把整块内容写入一行。

以下是修正后的代码,实现每条数据逐行写入CSV:

import requests
from bs4 import BeautifulSoup
from csv import writer

url = 'https://virtualhs.pwcs.edu/about/faculty'
res = requests.get(url)

soup = BeautifulSoup(res.content, 'lxml')
content_div = soup.find('div', id='divContent')

if content_div:
    # 移除所有不需要的p标签
    for p in content_div.select("p"):
        p.extract()
    
    # 获取页面中所有教师信息条目(对应ul下的li标签)
    faculty_items = content_div.select("li")
    
    # 打开CSV文件,一次性写入所有内容
    with open('now.csv', 'w', encoding='utf-8', newline='') as f:
        thewriter = writer(f)
        # 可选:写入表头
        thewriter.writerow(["教师信息"])
        
        # 遍历每个条目,清理后逐行写入
        for item in faculty_items:
            # 去除文本中多余的换行和空格
            clean_info = ' '.join(item.text.strip().split())
            thewriter.writerow([clean_info])

关键修正说明:

  • 先完成所有DOM清理操作,再提取目标条目,避免中途破坏节点结构。
  • 针对每个独立的教师信息条目调用writerow,实现一行一条数据。
  • 添加文本清理步骤,去除冗余换行和空格,让CSV内容更整洁。
  • 一次性打开文件完成写入,避免多次打开覆盖已有内容。

内容的提问来源于stack exchange,提问作者Syed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:01:01