fcm框架:一首歌的时间 手把手搭建基于FC的网站
fcm框架:一首歌的时间 手把手搭建基于FC的网站RSS(Really Simple Syndication 简易信息聚合)背景知识:实践目标:实现RSS阅读功能的Web站点实现步骤:
如上所述,访问FC提供的域名你会发现,一个基础的Web服务器就在公网环境下部署成功了。不需要买域名和SSL证书,不需要SSH登录服务器部署环境和软件,甚至不需要手动PUSH代码 。
名副其实,无标题党,一分钟部署一个网站。
(别的应用有相似的上线逻辑,在应用中心提供了一些完整的小应用,你可以直接使用)
小实践学习阿里云函数计算FC使用的相关知识之后,这首歌剩下的时间可以完成个小实践。
实践目标:
实现RSS阅读功能的Web站点
实现步骤:
- 安装解析工具
- 写入装饰器和调用函数
- 写入HTML页面
背景知识:
RSS(Really Simple Syndication 简易信息聚合)
这是一种描述和同步网站内容的格式你可以认为是一种定制个性化推送信息的服务。它能够解决你漫无目的的浏览网页的问题。它不会过时,信息越是过剩,它的意义也越加彰显。让自己关注的信息主动来找自己,且这些信息都是用户自己所需要的,这就是RSS的意义。
feedparser
这是一个Python的Feed解析库,可以处理RSS ,CDF,Atom 。使用它我们可从任何 RSS 或 Atom 订阅源得到标题、链接和文章的条目。
简要过程:
1.安装解析工具
这里使用的解析工具是feedparser它的feedparser.parse()函数提供了解析RSS URL的功能,它可以将RSS连接解析为一个字典feed 对应一个字典,每个entry包含一个文章的标题,作者,链接等内容。
使用pip3 install feedparser(或pip install feedparser)安装feedparser:
2.根据feedparser文档说明写入必要的装饰器和调用函数,示例文件:
其中,render_template()函数是flask函数,它从模版文件夹templates中呈现给定的模板上下文。我们html文件就要放在模版文件夹templates中,本例html文件为../templates/rss.html
from flask import Flask render_template
import feedparser
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/rss' methods=["GET"])
def rss():
feed = feedparser.parse(request.args.get('rssurl'))
return render_template('rss.html' entries=feed.entries)
if __name__ == "__main__":
app.run(host="0.0.0.0" port=9000)
3.写入HTML页面
根据解析出来的内容编写简单的HTML前端页面,示例文件:../templates/rss.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>RSS</title>
<!--引入外部CSS-->
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet">
<!--引入外部Javascript-->
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<!--导航栏-->
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">RSS</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">首页</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">搜索</button>
</form>
</div>
</div>
</nav>
<!--内容列表-->
<div class="accordion" id="accordionExample">
{% for entry in entries %}
<div class="accordion-item">
<h2 class="accordion-header" id="heading{{ loop.index }}">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ loop.index }}" aria-expanded="false" aria-controls="collapse{{ loop.index }}">
{{ entry.title }} | {{ entry.published }}
</button>
</h2>
<div id="collapse{{ loop.index }}" class="accordion-collapse collapse" aria-labelledby="heading{{ loop.index }}" data-bs-parent="#accordionExample">
<div class="accordion-body">
{{ entry.summary | safe }}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</body>
</html>
文件创建完成后点击保存和部署,在应用详情页找到并访问FC给我们分配的域名。
效果:
使用方法:
我们使用GET请求方式request.args.get('rssurl')获取参数,因此在URL后面传入需要解析的RSS订阅地址参数就可以解析源并渲染成相应的阅读样式。
例如: /rss?rssurl=<解析源>
示例:http://<EIP>/rss?rssurl=https://jandan.net/feed
综上,通过Serverless函数计算FC我们只需要依靠feedparser库相应的五行代码就完成了这个小实践。
总结我们可以真切的感受到,使用Serverless函数计算开发网站与传统架构开发有大不同,它撇去了传统开发中那些冗杂但是又不经常会去修改的配置和流程,让开发者专注于业务逻辑的开发。并且我们可以不用考虑服务器的选型,它做到了真正的弹性和灵活。
未来,我想我会再认真研究一下云原生思想和Serverless函数计算,乘着这股新风实现更加灵活和更复杂的业务应用。
更多feedparser官网 —— https://pypi.org/project/feedparser/
feedparser文档 ——https://feedparser.readthedocs.io/en/latest/
原文链接:http://click.aliyun.com/m/1000350626/
本文为阿里云原创内容,未经允许不得转载。