使用 Newsapi 的 Flask 新闻应用程序
Python 开发人员可以使用流行的 Flask Web 框架创建小型到中型的 Web 应用程序。它易于操作且轻量级。本项目展示了如何使用 News API(一个用于从多个来源收集新闻标题和故事的知名 API)来构建一个简单的新闻应用程序。
安装和语法
要开始使用我们的 Flask 新闻应用程序,我们首先需要安装 Flask 和 News API 库。我们可以使用 pip(Python 的包安装程序)安装 Flask。然后,我们可以使用以下命令安装 News API 库:
pip install newsapi-python flask
在深入探讨 Flask 新闻应用程序的实现细节之前,让我们先看一下 Flask 的基本语法。Flask 应用程序通常由一系列路由组成,这些路由是映射到 Python 函数的 URL。以下是一个简单的 Flask 路由示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
算法
安装**Flask** 和 **NewsAPI** 客户端包
导入所需的库并创建 Flask 应用程序实例
为 Flask 应用程序定义一个路由,并创建一个函数使用 News API 客户端库检索新闻文章。在此函数中,使用**get_top_headlines()** 方法从 BBC 新闻源检索头条新闻。提取每篇文章的标题、描述、urlToImage 和 url,并将它们附加到单独的列表中。
在 Flask 应用程序的 templates 文件夹中,创建一个名为 news.html 的新 HTML 文件。利用**Jinja2** 模板语法,在此文件中以 HTML 模板显示每篇新闻文章的标题、描述、**urlToImage** 和 url。
打开 Web 浏览器,并在 python app.py 文件中导航到https://:5000 以查看新闻!
示例
**注意** - 将 <your-api-key> 替换为您自己的 News API 密钥。您可以通过在 News API 网站上注册来获取免费的 API 密钥。
app.py
from flask import Flask, render_template
from newsapi import NewsApiClient
app = Flask(__name__)
newsapi = NewsApiClient(api_key='<your-api-key>')
@app.route('/')
def news():
top_headlines = newsapi.get_top_headlines(sources='bbc-news')
top_headlines = top_headlines['articles']
desc = []
news = []
img = []
link = []
for i in range(len(top_headlines)):
myarticles = top_headlines[i]
news.append(myarticles['title'])
desc.append(myarticles['description'])
img.append(myarticles['urlToImage'])
link.append(myarticles['url'])
mylist = zip(news, desc, img, link)
return render_template('news.html', context=mylist)
if __name__ == '__main__':
app.run()
news.html
**注意** - [在与**“app.py”** 相同的位置创建一个名为**“templates”** 的文件夹,并在该文件夹内存储此**news.html** 文件]
{% block content %}
<h1>Top Headlines</h1>
{% for title, description, image, url in context %}
<div class="article">
<h2>{{ title }}</h2>
{% if image %}
<img src="{{ image }}" alt="{{ title }}" width="100" height="100">
{% endif %}
<p>{{ description }}</p>
<a href="{{ url }}">Read more</a>
</div>
{% endfor %}
{% endblock %}
要运行此程序,请打开 app.py 文件所在的终端,然后键入 python app.py。访问http://127.0.0.1:5000 以访问新闻应用程序,因为这将启动一个本地主机服务器。
输出

解释
该项目包含两个主要文件,**“app.py”** 和 **“news.html”**,并且需要安装**“flask”** 和 **“newsapi”** 库。
“app.py”文件包含 Flask Web 应用程序的主要逻辑。它从 Flask 中导入 Flask 和 render_template 模块,从 newsapi 中导入**NewsApiClient** 类。还需要**API 密钥**才能访问新闻数据。
**"@app.route('/')"** 装饰器指定 Flask 应用程序的 URL 端点。当用户导航到根 URL 时,将调用“news”函数。此函数向 NewsAPI 发出 API 请求,以获取来自 BBC 新闻源的头条新闻。它从 API 响应中提取相关数据并将其存储在单独的列表中,包括标题、描述、图像 URL 和指向完整文章的 URL 链接。
然后,该函数使用内置的 zip 函数将这些列表组合成一个名为**“mylist”** 的可迭代对象。此可迭代对象包含每篇文章的一个元组,其中每个元组包含**标题、描述、图像 URL** 和**URL 链接**。
最后,该函数使用 Flask 中的**“render_template”** 方法呈现“news.html”模板。它将**“mylist”** 可迭代对象传递到**“news.html”** 模板中的**“context”** 变量。
“news.html”文件包含用于在网页上显示头条新闻的 HTML 和 Jinja2 模板代码。**{% block content %}** 和 **{% endblock %}** 标记定义了一个将显示内容的块。for 循环遍历从“app.py”传递的“context”可迭代对象,并显示每篇文章的标题、图像(如果可用)、描述和“阅读更多”链接。
结论
使用此知名服务从各种来源收集新闻报道,您可以创建一个单页新闻应用程序,该应用程序根据所选来源显示最新标题、摘要、照片和链接。本文向您展示了如何使用 News API 开发一个简单的 Flask 新闻应用程序,使您能够通过结合 Flask Web 框架和 Python 编程语言来快速有效地创建在线应用程序。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP