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

编程新手求助:如何从HTML中提取纯新闻内容用于情感分析

从HTML中提取

标签内的纯新闻文本指南

嘿,作为编程新手能想到用requests和BeautifulSoup来处理网页内容,已经迈出了很棒的第一步!针对你想要提取新闻文章里<p>标签的纯文本、去除冗余HTML的需求,我来给你一步步拆解解决方案:

一、修正你的定位逻辑(关键!)

你之前的代码里尝试查找script标签的arti-flow类,这是个小失误——实际上新闻正文是在class为arti-flow的<div>容器里,里面的所有<p>标签才是你要的新闻内容。先定位到这个父容器,能帮你过滤掉页面其他无关的<p>标签(比如导航栏、侧边栏的文字)。

二、修改后的完整代码示例

import requests
from bs4 import BeautifulSoup

# 目标新闻链接
target_url = 'https://www.moneycontrol.com/news/business/earnings/cadila-health-consolidated-december-2018-net-sales-at-rs-3577-90-crore-up-9-77-y-o-y-3497711.html'

# 发送请求获取网页内容(记得加请求头避免被反爬拦截)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(target_url, headers=headers)
response.raise_for_status()  # 如果请求失败,抛出异常提示

# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')

# 定位新闻正文的父容器
article_container = soup.find('div', class_='arti-flow')

if article_container:
    # 提取容器内所有<p>标签的文本,拼接成完整新闻
    news_content = '\n\n'.join([p.get_text(strip=True) for p in article_container.find_all('p')])
    print("提取到的纯新闻文本:\n")
    print(news_content)
else:
    print("未找到新闻正文容器,可能页面结构有变化哦!")

三、关键代码解释

  • headers请求头:模拟浏览器发送请求,避免被网站的反爬机制拦截,这是新手很容易忽略的点;
  • find('div', class_='arti-flow'):精准定位到新闻正文所在的容器,确保只提取目标区域的内容;
  • p.get_text(strip=True):提取每个<p>标签内的纯文本,strip=True会自动去除文本前后的空格、换行等冗余字符;
  • '\n\n'.join(...):把每个段落的文本用空行分隔,让最终的新闻内容排版更清晰。

四、后续遍历多链接&情感分析的思路

  1. 批量处理链接:把所有需要处理的新闻链接存到一个列表里,用for循环遍历每个链接,重复上面的提取逻辑,把每个链接的新闻文本存到列表或本地文件中(比如用open()函数写入.txt文件);
  2. 情感分析准备:提取完所有纯文本后,就可以用nltk、textblob或者国内的情感分析库(比如snownlp)来处理文本啦,直接把提取到的纯文本传入这些库的分析方法即可。

小提示

如果遇到某些网站页面结构变化,导致找不到arti-flow容器,可以右键网页→检查元素,手动查看新闻正文所在的标签和类名,调整代码里的选择器就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:54:20