Py学习  »  Python

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

brooks的技术小屋 • 3 年前 • 401 次点击  

当我们发布文章的时候,希望能够给网站中的一些关键词自动的添加内链,这个在一些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
 
401 次点击