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

Python网页爬取时如何将提取的文本分割为段落?

解决网页爬取文本保留段落的问题

这个问题很常见——get_text()方法默认会把所有嵌套标签的文本合并成一串,自然就丢失了段落结构。咱们来修改代码,让提取的文本保留原有的段落划分:

修改后的完整代码

import requests as req
from bs4 import BeautifulSoup
import pandas as pd

num = 0
atc = {}
for i in range(len(url)):
    res = req.get(url[i]).content
    soup = BeautifulSoup(res, "html.parser")
    # 先定位到内容容器
    content_container = soup.find(class_='meteredContent css-1r7ky0e')
    if not content_container:
        atc[i] = ""
        continue
    # 提取容器内所有的段落标签(这里假设是<p>,根据实际网页结构调整)
    paragraphs = content_container.find_all('p')
    # 用两个换行符分隔段落,还原段落结构;同时过滤掉空的段落
    article_text = '\n\n'.join([p.get_text(strip=True) for p in paragraphs if p.get_text(strip=True)])
    atc[i] = article_text

# 保存到CSV
st = pd.DataFrame(atc, index=['text',])
st.T.to_csv("articles.csv", encoding='utf_8_sig')

关键修改点说明

  • 不再直接对内容容器调用get_text(),而是先找到容器内的段落标签(这里用<p>,大多数新闻/文章网站会用这个标签定义段落)
  • 使用'\n\n'.join(...)把每个段落的文本用两个换行符连接,这样保存到CSV后,打开时段落之间会有空行分隔,还原原文的段落结构
  • 增加了if not content_container的判断,避免找不到容器时出现报错;同时过滤掉空的段落,避免多余的空行

适配不同网页结构

如果目标网站的段落不是用<p>标签,而是用其他标签(比如<div class="paragraph">),只需要修改find_all()的参数即可:

# 示例:如果段落是带class的div标签
paragraphs = content_container.find_all('div', class_='paragraph')

你可以先打开目标网页的开发者工具(F12),查看文章内容里的段落对应的HTML标签,再调整代码中的标签选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:07:51