一、开发环境搭建
在开始编写代码之前,必须先配置好本地Python运行环境。本指南基于Python 3.8版本编写,所有依赖库均为主流稳定版本。
打开终端或命令行工具(CMD/PowerShell),输入以下命令检查Python是否已安装:
```bash
python --version
```
如果未安装,请前往Python官网下载安装包并运行安装,安装时务必勾选"Add Python to PATH"选项。环境准备好后,执行以下命令安装本项目所需的四个核心第三方库:
```bash
pip install requests beautifulsoup4 pandas jieba openpyxl
```
requests用于发送网络请求获取网页源码,beautifulsoup4用于解析HTML提取文章标题,pandas用于数据统计与Excel文件导出,jieba用于中文分词提取高频关键词,openpyxl是pandas写入Excel所需的引擎。
二、爬虫与分词代码编写
在本地新建一个文件,命名为keyword_analyzer.py。将以下完整代码直接复制粘贴到文件中。这段代码实现了自动抓取目标网页列表页标题、进行中文分词、统计词频并导出Excel的全过程。
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import jieba
import time
from collections import Counter
配置区域
目标列表页URL(请替换为你想要分析的竞品公众号、知乎专栏或博客列表页)
TARGET_URLS = [
"https://example.com/news/list/page/1", 替换为实际URL
"https://example.com/news/list/page/2", 如需抓取多页,在此添加
]
HTML中标题对应的CSS选择器(按F12查看网页源码获取)
例如:
标题
,则填写 '.entry-title'
TITLE_SELECTOR = '.title'
请求头,模拟浏览器访问,防止被反爬虫拦截
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
停用词表,过滤无意义的虚词
STOP_WORDS = set([
'的', '了', '在', '是', '我', '有', '和', '就', '不', '人', '都', '一', '一个', '上', '也', '很', '到', '说', '去', '你', '会', '着', '没有', '看', '好', '自己', '这',
'那', '与', '及', '其', '让', '给', '把', '被', '最', '而', '对于', '关于', '通过', '进行', '实现', '一个', '如何', '什么', '怎么', '可以', '这种', '我们', '你们'
可以根据实际情况继续添加
])
def fetch_html(url):
"""发送GET请求获取网页HTML"""
try:
response = requests.get(url, headers=HEADERS, timeout=10)
response.raise_for_status()
response.encoding = response.apparent_encoding 自动识别编码
return response.text
except Exception as e:
print(f"请求失败: {url}, 错误: {e}")
return ""
def extract_titles(html, selector):
"""使用BeautifulSoup解析HTML提取标题"""
soup = BeautifulSoup(html, 'html.parser')
根据选择器查找元素,并获取文本
elements = soup.select(selector)
titles = [element.get_text().strip() for element in elements if element.get_text().strip()]
return titles
def analyze_keywords(all_titles):
"""对所有标题进行分词并统计词频"""
full_text = " ".join(all_titles)
使用jieba进行精确模式分词
words = jieba.lcut(full_text)
过滤停用词和单字(通常单字关键词价值较低)
meaningful_words = [
word for word in words
if word not in STOP_WORDS and len(word) > 1
]
统计词频
word_counts = Counter(meaningful_words)
return word_counts
def main():
all_titles = []
print("开始抓取数据...")
for url in TARGET_URLS:
print(f"正在处理: {url}")
html = fetch_html(url)
if html:
titles = extract_titles(html, TITLE_SELECTOR)
all_titles.extend(titles)
print(f"本页提取到 {len(titles)} 个标题")
time.sleep(2) 礼貌性爬取,避免频繁请求导致IP被封
if not all_titles:
print("未提取到任何标题,请检查URL和SELECTOR配置。")
return
print(f"\n共提取到 {len(all_titles)} 个标题,开始分析关键词...")
word_counts = analyze_keywords(all_titles)
转换为DataFrame并排序
df = pd.DataFrame(word_counts.items(), columns=['关键词', '出现频次'])
df = df.sort_values(by='出现频次', ascending=False)
导出Excel
output_file = 'hot_keywords_report.xlsx'
df.to_excel(output_file, index=False)
print(f"\n分析完成!结果已保存至: {output_file}")
print("\n前10高频关键词预览:")
print(df.head(10).to_string(index=False))
if __name__ == "__main__":
main()
```
三、关键配置项修改说明
代码无法直接运行,必须针对你的目标网站进行修改。请打开浏览器,访问你想分析的竞品文章列表页(例如某知名科技博客的列表页)。
1. 获取URL:将浏览器地址栏中的完整URL复制,替换代码中TARGET_URLS列表里的示例地址。如果需要分析多页数据,将第2页、第3页的URL依次添加到列表中。
2. 获取CSS选择器:这是最关键的一步。在网页文章标题上点击鼠标右键,选择“检查”或“审查元素”。在弹出的开发者工具中,高亮显示的代码即为标题的HTML标签。
- 如果标签是
文章标题
,那么选择器就是.post-title。
- 如果标签是
文章标题
,那么选择器就是title。
- 如果标签没有class和id,只有
文章标题
,那么选择器就是h3。
将获取到的选择器字符串赋值给代码中的TITLE_SELECTOR变量。
四、运行脚本与数据清洗

配置完成后,在代码文件所在目录打开终端,输入以下命令运行脚本:
```bash
python keyword_analyzer.py
```
脚本运行结束后,目录下会生成一个名为hot_keywords_report.xlsx的Excel文件。打开该文件,你将看到两列数据:“关键词”和“出现频次”。
虽然代码中内置了基础的停用词表,但你需要根据行业特性进行二次清洗。打开Excel文件,手动删除以下几类无效词:
- 行业通用废词:例如分析“互联网”行业,可能“互联网”、“科技”这三个词出现频率极高,但作为关键词竞争太大且无具体指向,建议删除。
- 特定年份/月份:如“2023”、“2024”、“5月”,除非你的文章专门针对时效性内容。
- 品牌词:如果竞品标题中包含大量自己的品牌名,这些词对你没有参考价值,直接删除。
清洗后,剩下的列表就是经过市场验证的、用户关注度高的黄金关键词库。
五、数据驱动的标题优化策略
拿到关键词表后,不要盲目堆砌。新媒体平台的推荐算法通常基于“关键词权重”和“用户点击率”。以下是利用该数据提升曝光率的具体实操公式:
1. 长尾词组合策略:不要只盯着频次最高的Top 10词,竞争太激烈。选取频次在5-20次区间的“中腰部关键词”进行组合。公式:[痛点/疑问] + [核心长尾词] + [解决方案/收益]。
- 例如:关键词表中有“私域流量”、“转化率”、“下降”。组合《私域流量转化率下降?用这三招数据复盘法快速破局的实操指南》。
2. 数字冲击力策略:在关键词前加上具体的数字,能显著提升点击率。算法倾向于认为包含数字的内容信息密度更高。
- 例如:关键词是“Python爬虫”。优化《零基础学会Python爬虫:抓取竞品数据的5个关键代码片段》。
3. 热点借势策略:如果在关键词分析中发现某些特定词汇(如“AI大模型”、“降本增效”)在近期出现频次激增,立即将这些词植入到你的文章摘要和前两段正文中。平台推荐机制不仅匹配标题,也会匹配正文关键词密度。
4. 标签覆盖策略:发布文章时,在后台的“标签”或“话题”栏目中,不要凭感觉填写。直接从Excel表中选取前5个最相关的关键词填入。这能确保你的文章被归入最精准的流量池中。
通过以上步骤,你利用Python技术完成了从“竞品数据获取”到“关键词提炼”再到“标题SEO优化”的闭环。这套逻辑不依赖任何第三方付费工具,且数据来源真实有效,能够直接提升内容在搜索引擎和推荐算法中的匹配概率。