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

如何统计网页Meta关键词在文章文本中的出现次数

问题分析

你当前的代码里,meta_keywords列表实际上只包含一个元素——那串逗号分隔的完整关键词字符串,而非拆分后的单个关键词。循环时会把整个长串当作一个关键词去统计,自然在文本里找不到匹配,计数为0。另外,你用来统计的text是从网页摘要(doc.summary())提取的,范围太小,大概率没包含目标关键词,这也是计数为0的原因之一。

解决步骤
  1. 拆分逗号分隔的关键词:把提取到的meta关键词字符串按逗号拆分,同时清理掉关键词前后的空格,得到单个关键词的列表。
  2. 使用完整网页正文统计:直接从原始网页HTML中提取正文文本,避免用摘要导致的内容缺失。
修改后的完整代码
import requests
from bs4 import BeautifulSoup

res = requests.get(
    'https://www.wpbeginner.com/showcase/24-must-have-wordpress-plugins-for-business-websites/',
    headers={"User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"}
)

# 提取完整网页正文(替代原来的摘要)
soup = BeautifulSoup(res.text, 'html5lib')
# 定位文章内容容器,避免统计导航、侧边栏等无关内容
content_div = soup.find('div', class_='entry-content')
text = content_div.get_text() if content_div else soup.get_text()

# 提取并拆分meta关键词
meta_keywords = []
for item in soup.select('[name=Keywords][content], [name=keywords][content]'):
    # 按逗号拆分关键词
    keyword_list = item['content'].split(',')
    # 清理每个关键词的前后空格,过滤空字符串
    cleaned_keywords = [kw.strip() for kw in keyword_list if kw.strip()]
    meta_keywords.extend(cleaned_keywords)

# 统计每个关键词的出现次数
for keyword in meta_keywords:
    count = text.count(keyword)
    print(f"{keyword}: {count}")
说明
  • 拆分关键词时用split(',')把长字符串拆成单个关键词,再用strip()去掉每个关键词前后的空格,同时过滤掉可能的空字符串(比如逗号连续的情况)。
  • 提取正文时直接定位文章的内容容器(entry-content类的div),这样统计的是真正的文章内容,避免无关文本干扰。如果找不到这个容器,就退而求其次用整个网页的文本。
  • 修改后每个关键词会被单独统计,计数结果会更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:01:20