📜  每日最新消息 webapp 在Python使用 PyWebio(1)

📅  最后修改于: 2023-12-03 15:11:00.370000             🧑  作者: Mango

每日最新消息 webapp 在Python使用 PyWebIO

简介

PyWebIO是Python中一个简单易用的Web应用程序库,可用于快速开发Web应用程序和交互式数据可视化工具。与传统的Web开发方式不同,PyWebIO使用Python函数作为Web应用程序的处理逻辑,无需编写HTML和JavaScript代码。与此同时,PyWebIO封装了很多常用的Web组件和功能,开发人员可以直接调用这些组件以方便地构建Web页面。本文将以“每日最新消息”Web应用程序为例,介绍如何使用PyWebIO开发Web应用程序。

程序说明

“每日最新消息”Web应用程序是一款可以展示当天全球新闻的应用程序。通过它,用户可以直接在浏览器中查看新闻,并且还可以通过搜索功能查找自己关心的新闻。本应用程序使用的是Public API“News API”,因此需要先获得News API的API Key。在编写代码之前,请先访问News API官网进行注册,并获取一个API Key。获取API Key过程中需要输入一个有效的邮件地址和一个名称,然后就可以获得API Key。获得API Key之后,将其填入代码中的“YOUR_API_KEY”处即可使用。

代码
from pywebio.platform.flask import webio_view
from pywebio import STATIC_PATH
from flask import Flask, send_from_directory
from pywebio.input import *
from pywebio.output import *

from newsapi import NewsApiClient
newsapi = NewsApiClient(api_key='YOUR_API_KEY')

app = Flask(__name__)

def get_news():
    news = newsapi.get_top_headlines(language='en')
    articles = news['articles']
    return articles

def search_news(query):
    news = newsapi.get_everything(q=query, language='en', sort_by='publishedAt')
    articles = news['articles']
    return articles

def news_app():
    put_markdown("# 每日最新消息")
    put_text("以下是今日头条:")
    articles = get_news()
    for article in articles:
        put_markdown('### %s\n'%article['title'])
        put_text('作者: %s in %s\n'%(article['author'], article['source']['name']))
        put_text(article['description'])
        put_link(article['url'], '全文')
        put_line_break()

    while 1:
        query = input("搜索新闻:",type=TEXT)
        if not query:
            break
        articles = search_news(query)
        if not articles:
            put_text('没有找到有关“%s”的新闻,请尝试不同的关键字'%query)
            continue
        for article in articles:
            put_markdown('### %s\n'%article['title'])
            put_text('作者: %s in %s\n'%(article['author'], article['source']['name']))
            put_text(article['description'])
            put_link(article['url'], '全文')
            put_line_break()
    put_text("感谢使用本应用程序!")

app.add_url_rule('/tool', 'webio_view', webio_view(news_app),
            methods=['GET', 'POST', 'OPTIONS'])

@app.route("/")
def main():
    return redirect('/tool')

if __name__ == '__main__':
    app.run(host='localhost', port=80)
运行
  1. 将上述代码段保存为news.py;
  2. 在终端中切换到代码所在的目录下,执行命令python news.py启动Web应用程序;
  3. 打开浏览器,访问http://localhost即可使用新闻应用程序。
结论

上述代码段使用PyWebIO开发Web应用程序,并且结合Public API“News API”实现了一个“每日最新消息”Web应用程序。开发人员只需要熟练掌握Python语言,并熟悉PyWebIO的API函数,就能快速开发Web应用程序。