Django 博客生成 Markdown 摘要的几种方式对比

方式一: 直接取 Markdown 文字的前100个字(不推荐)

image.png

这种简单粗暴的方式很不友好, 如果开头是一张图片或者是链接, 那么用户可能只看到链接, 体验感很差.

方式二: 使用正则去掉Markdown (有门槛)

通过研究 Markdown 语法, 然后用正则表达式去除即可.

import re

content = re.sub(r'\[(.*?)\]\(.*?\)', '', article.body)
pattern = r'[*#>`-]'
article.body = re.sub(pattern, '', content)

image.png

方式三: 转换为 HTML, 再用过滤器去掉HTML标签 (推荐)

Django 内置了过滤器, 引入后即可清除 HTML 标签(当然, 你也可以用正则表达式过滤)

from django.utils.html import strip_tags
article.body = strip_tags(markdown.markdown(article.body))

image.png

方式四: 使用 Xpath 的 String() 方法 (推荐)

Xpath 的 string()方法常可用于爬取网页时提取网页的纯文本, 依据这个思路也可以用来提取 Markdown 文字的纯文本.

from lxml import etree
html = markdown.markdown(article.body)
content = etree.HTML(html)
article.body = content.xpath('string()')
article.body = markdown.markdown(article.body)

image.png


欢迎关注公众号: 程序员的碎碎念

我的个人博客: feson.tech

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值