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

如何通过Python爬取网页并仅将文章标题与正文保存至CSV文件

爬虫代码修正方案:提取标题+正文并保存为CSV

原代码存在的问题

  • get_data()函数未返回数据,导致后续写入文件时data为None,触发报错
  • 直接调用soup.find_all('p')会抓取页面所有段落标签,包含页脚、导航等无关内容,无法精准获取文章正文
  • 文件保存未遵循CSV格式,路径缺少.csv后缀,且写入方式不符合CSV规范
  • 手动调用url_1.close()属于冗余操作,with上下文管理器会自动完成文件关闭

修正后的完整代码

import requests
import csv
from bs4 import BeautifulSoup

def get_data():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }

    # 发起网页请求并捕获异常
    r = requests.get("https://insights.blackcoffer.com/ai-in-healthcare-to-improve-patient-outcomes/", headers=headers)
    r.raise_for_status()
    soup = BeautifulSoup(r.text, 'lxml')

    # 提取文章标题(定位页面标题标签)
    title = soup.find('h1', class_='entry-title').get_text(strip=True)

    # 提取文章正文(定位正文容器后获取有效段落)
    content_container = soup.find('div', class_='entry-content')
    paragraphs = content_container.find_all('p')
    # 拼接段落文本,过滤空内容
    content = '\n'.join([p.get_text(strip=True) for p in paragraphs if p.get_text(strip=True)])

    return title, content

# 获取标题和正文数据
article_title, article_content = get_data()

# 保存为CSV文件
csv_file_path = r'C:\Users\rishabh singh\Desktop\url_1.csv'
with open(csv_file_path, mode='w', encoding='utf-8', newline='') as file:
    csv_writer = csv.writer(file)
    # 写入表头
    csv_writer.writerow(['标题', '正文'])
    # 写入文章数据
    csv_writer.writerow([article_title, article_content])

print(f"数据已成功保存至:{csv_file_path}")

修正说明

  1. 数据返回优化:让get_data()返回提取到的标题和正文,确保后续能获取到有效数据
  2. 精准内容定位:通过页面元素的class属性定位标题(h1.entry-title)和正文容器(div.entry-content),避免无关内容干扰
  3. CSV规范写入:使用csv.writer工具,添加表头,确保文件符合CSV格式;设置utf-8编码防止中文乱码,newline=''避免生成空行
  4. 异常处理与兼容性:添加r.raise_for_status()捕获请求错误,更新User-Agent为现代浏览器标识,提升请求成功率
  5. 文本处理优化:过滤正文里的空段落,让保存的内容更整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:12:23