Python Web开发:从富文本中提取文字

来自CloudWiki
跳转至: 导航搜索

安装pyquery

pip install pyquery

原理

通过富文本存储的内容都是以带格式的HTML字符串存储的,在渲染时Django模板会自动解析字符串中的特定HTML标签符号。

这里借助第三方工具包pyquery进行HTML解析。

修改视图处理函数

newsApp/views.py:

增加富文本解析的内容:

代码中的pq.

 
from pyquery import PyQuery as pq

 # 从数据库获取、过滤和排序数据
    newList = MyNew.objects.all().filter(
        newType=newName).order_by('-publishDate')
    for mynew in newList:
        html = pq(mynew.description)  # 使用pq方法解析html内容
        mynew.mytxt = pq(html)('p').text()  # 截取html段落文字
  • newList本身是一个临时变量,临时增加的mytxt也是一个临时变量.htm

修改网页

修改newList.html,在每条新闻标题下方添加文字说明。

truncatechars:"110" 用于截断字符串,使得其只只显示前面110个字符。

 
         {% for mynew in newList %}
                <div class="news-model"><img src="{% static 'img/newsicon.gif' %}">
                    <a href="{% url 'newsApp:newDetail' mynew.id %}"><b>{{mynew.title}}</b></a>
                    <span>【{{mynew.publishDate|date:"Y-m-d"}}】</span>
                    <p>
                        <!-- 添加新闻简要说明 -->
                        {{mynew.mytxt|truncatechars:"110"}}...
                    </p>
                </div>
                {% endfor %}