社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

[干货]python是如何给文章自动添加关键词链接

brooks的技术小屋 • 5 年前 • 867 次点击  

当我们发布文章的时候,希望能够给网站中的一些关键词自动的添加内链,这个在一些cms和博客程序里面是有插件实现对应的功能的。但是如果恰好你的博客程序或cms程序没有这个功能的时候怎么办呢?

方法无外乎两种,一种就是人工添加,另外一种就是通过程序来实现啦。

今天在这里给大家分享一下,如果在发布之前利用Python自动给文章添加关键词的内外联。

步骤一

首先我们得实现准备好关键词和对应的链接,这个可以如果会Python的童鞋肯定就是可以从文件或数据库里面去读取啦。然后就将它们组合成字典的形式,类似下面这样。

keyword_maps = {'央视网': 'http://www.yangshi.com',
'卫星': 'http://www.weixing.com',
'国际商业': 'http://www.guojishangye.com',
'物联网': 'http://www.wulianwang.com',
'星座': 'http://www.xingzuo.com'}

步骤二

接下来就是要把这些要添加锚文本的关键词组合成正则表达式。

anchor_re = re.compile(rf"({'|'.join(keyword_maps.keys())})")

为什么用正则表达式呢?因为正则表达式书写简单,而且速度很快。如果你用for循环的话,估计是效率就很差了。因为for循环需要两次迭代才行。

步骤三

利用正则表达式找出文章中都包含哪些关键词,并利用集合去重。

# 这里文章内容
text = """央视网消息:中国国际商业航天高峰论坛10月19日在湖北武汉举行。
记者从论坛上了解到,我国正在建设的首个卫星物联网——“行云工程”进展顺利,
预计将于2023年前后建设完成由百余颗卫星组成的“物联网星座”。
目前第一阶段建设任务已全面完成。"""


include_word = set(anchor_re.findall(text))

步骤四

利用循环遍历找出来的关键词,然后用正则将关键词替换成a标签链接即可。

for kw in include_word:
link = keyword_maps.get(kw)
text = re.sub(rf'({kw})', rf'{link}">\g<1>', text, count=1)

效果如下:

这里的话只是首次出现的时候进行替换,如果想要全部替换那么把count=1这个参数删除掉就好了

完整代码

# -*- coding: utf-8 -*-
import re

text = """央视网消息:中国国际商业航天高峰论坛10月19日在湖北武汉举行。
记者从论坛上了解到,我国正在建设的首个卫星物联网——“行云工程”进展顺利,
预计将于2023年前后建设完成由百余颗卫星组成的“物联网星座”。
目前第一阶段建设任务已全面完成。"""


keyword_maps = {'央视网': 'http://www.yangshi.com',
'卫星': 'http://www.weixing.com',
'国际商业': 'http://www.guojishangye.com',
'物联网': 'http://www.wulianwang.com',
'星座': 'http://www.xingzuo.com'}

anchor_re = re.compile(rf"({'|'.join(keyword_maps.keys())})")

include_word = set(anchor_re.findall(text))
new_text = text
for kw in include_word:
link = keyword_maps.get(kw)
text = re.sub(rf'({kw})', rf'{link}">\g<1>', text, count=1)
print(text)

以上的内容和关键词及链接都是虚构出来的,主要就是演示为目的。我们一般添加关键词连接的话都是添加站内的,因此大家拿去改吧改吧就成自己的了。这里只是给一个思路而已。

如果你想深入学习Python在seo领域的应用,那么欢迎参加我的python与seo实战训练营第三期课程。

点击下面链接了解详情,或直接私聊我,wx:brookxs

第三期Python与seo实战训练营开始预售啦,9月开课



关注我,一起学习更多的seo技术


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74579