在日常网站更新时,我们总是想对文章进行自动化处理,比如加标签、加图片、图片保存路径和文章保存路径等操作,作为较强的胶水语言python,可以将所需的功能整合到一起.
最近在seo合作中,帮一位朋友对文章进行
处理的功能,首先看下功能需求逻辑,下面就分享的一下
一、数据库方面
数据库方面创建所需要的字段,并按照字段要求进行文章的生成保存,标识记录。字段简单了解一下,文章路径是生成一篇文章一个json文件,其他的字段就是对文章生成状态进行一个字段标识补充。
二、图片爬取
图片在bing随机爬取一张,并进行等比例缩放,最后按日期保存在日期文件夹中
'''获取图片'''
def bing_img(self):
"""
https://cn.bing.com/images/async
?q={0}&first={1}&count={2}&scenario=ImageBasicHover&
datsrc=N_I&layout=ColumnBased&mmasync=1&
dgState=c*9_y*2226s2180s2072s2043s2292s2295s2079s2203s2094_i*71_w*198&
IG=0D6AD6CBAF43430EA716510A4754C951&SFX={3}&iid=images.5599
"""
base_url = 'https://cn.bing.com/images/async?'
query_string = {
'q':'工艺品用胶',
'first':'1',
'count':'35',
'SFX':'1',
'tsc':'ImageBasicHover',
'cw':'1536',
'ch':'294',
'relp':'35',
'datsrc':'I',
'layout':'RowBased',
'mmasync':'1',
'IG':'7321CF6ECDD24C2CA3B41817086DD782',
'iid':'images.5553',
'dgState':'x*0_y*0_h*0_c*7_i*36_r*5'
}
headers = {
'User-Agent':UserAgent().random
}
url = base_url + urlencode(query_string)
req_obj = urllib.request.Request(url=url,headers=headers)
html = urllib.request.urlopen(req_obj).read().decode('utf-8')
url_list = re.findall(r'class="img_cont.*?src="(.*?)\?',html,re.S)
# print(url_list)
rand_url = random.choice(url_list)
self.save_img(rand_url)
'''按日期保存图片'''
def save_img(self,url):
key = 'danmoln'
str1 = '123456789'
str2 = string.ascii_letters
salt = ''.join(random.sample(str1+str2,6))
img_name = hashlib.md5((salt+key).encode('utf-8')).hexdigest()
dir_path = 'img_' + str(datetime.datetime.today().date())
exists(dir_path) or makedirs(dir_path)
try:
self.img_path = './%s/'%dir_path + img_name + '.jpg'
urllib.request.urlretrieve(url,self.img_path)
except:
print('图片保存异常')
else:
print('图片保存成功')
self.zoom_img(self.img_path)
'''等比例缩放图片'''
def zoom_img(self,img_path):
image = cv2.imread(img_path)
size = image.shape
width,height = size[1],size[0]
if width > 800:
rand_width = random.choice(range(200,801))
percent = rand_width / width
rand_height = int(height*percent)
resize_img = cv2.resize(image,(rand_width,rand_height))
elif width < 200:
rand_width = random.choice(range(200, 801))
percent = rand_width / width
rand_height = int(height * percent)
resize_img = cv2.resize(image, (rand_width, rand_height))
else:
resize_img = image
cv2.imwrite(img_path,resize_img)
三、文章处理
对应需求逻辑,一一进行正则替换,修改。
'''文章处理'''
def handle_content(self):
content = self.content
#去除开头符号
content = re.sub(r'^\W*?(?P<one>\w)',self.extract_one,content,re.S)
# print(content)
#去除文章中的\
content = re.sub(r'\\','',content,re.S)
# print(content)
#顿号、前数字是1234或一二三四,加br标签分段
content = re.sub(r'(?P<num>\S)(?P<dun>、)',self.extract_num,content,re.S)
# print(content)
#句号、问号和感叹号后加br标签
content = re.sub(r'(?P<hao>\。|\?|\?|\!|\!)',self.extract_hao,content,re.S)
# print(content)
#两个顿号间的句号、问号和感叹号后不加br标签
content = re.sub(r'<br>\s*?<br>','<br>',content,re.S)
print(content)
#每300字配一张图
content_300 = content[:300]
content_301 =content[300:]
self.bing_img()
content_301 = content_301.replace('<br>','<br><p><img src="%s"></p>'%self.img_path,1)
content = content_300 + content_301
print(content)
def extract_con(self,matched):
content_301 = matched.group('con')
self.bing_img()
img_add = '<p><img src="%s">'%self.img_path + '</p>'
part_content = content_301 + img_add
return part_content
def extract_hao(self,matched):
hao = matched.group('hao')
return hao + '<br>'
def extract_num(self,matched):
dun = matched.group('dun')
num = matched.group('num')
try:
num = int(num)
return '<br>' + str(num) + dun
except:
for cn in list(self.cn_num.values()):
if ord(num) == cn:return '<br>' + num + dun
def extract_one(self,matched):
one = matched.group('one')
return str(one)
最后的效果如下:
文章:
content = """ ? 建站平台有哪些?建站平台是现在互联网中比较流行的网站制作方式之一,
那么建站平台有哪些呢?下面就由小编为大家介绍一下: 一、自助式建站系统 自助式网站建设系统是采用asp.net开发语言开发的基于web的站点。
它具有功能强大、操作简单、运行速度快等特点,而且不需要任何专业知识就可以轻松建立自己的网站。
二、模板型自助建站系统 模板型自助建站系统就是将各种常用的1、网页模版进行整理和分类,用户可以根据自己需求来下载相应的模版和内容,
然后通过修改代码来实现自己的个性化页面。三、cms类型自助建 站系统 cms类型自助建站的原理与博客类似,
都是利用一些程序模块来搭建一个属于自己的网站空间。但是cms类型的站点更加注重用户体验度以及搜索引擎友好度等指标。
四、dedecms类型自 动化营销管理系统 dede cms是国内最知名的开源cms软件产品之一,
其最大的特点在于集成了论坛群发系统和博客群发系统等强大的网络推广功能!"""
处理后:
建站平台有哪些?<br>建站平台是现在互联网中比较流行的网站制作方式之一,
那么建站平台有哪些呢?<br>下面就由小编为大家介绍一下: <br>一、自助式建站系统 自助式网站建设系统是采用asp.net开发语言开发的基于web的站点。<br>
它具有功能强操作简运行速度快等特点,而且不需要任何专业知识就可以轻松建立自己的网站。<br>二、模板型自助建站系统 模板型自助建站系统就是将各种常用的<br>1、网页模版进行整理和分类,用户可以根据自己需求来下载相应的模版和内容,
然后通过修改代码来实现自己的个性化页面。<br>三、cms类型自助建 站系统 cms类型自助建站的原理与博客类似,
都是利用一些程序模块来搭建一个属于自己的网站空间。<br><p><imgsrc="./img_2022-02-27/26ebe097e36cf8304e8b253189b1bb6f.jpg"></p>但是cms类型的站点更加注重用户体验度以及搜索引擎友好度等指标。<br>四、dedecms类型自 动化营销管理系统 dede cms是国内最知名的开源cms软件产品之一,
其最大的特点在于集成了论坛群发系统和博客群发系统等强大的网络推广功能!<br>
最终这三点核心问题解决之后,后面就是一些零碎的小代码了,之后再完善一下代码就可以了。如果大家对我的文章感兴趣