Python 使用Newsapi的Flask新闻应用

Python 使用Newsapi的Flask新闻应用

Python开发人员可以使用流行的Flask网络框架创建小到中型的网络应用程序。它易于操作且轻量级。该项目展示了使用News API,一个用于从多个来源获取新闻标题和故事的流行API,构建一个简单的新闻应用程序。

安装和语法

要开始使用我们的Flask新闻应用程序,我们需要首先安装Flask和News API库。我们可以使用pip来安装Flask,pip是Python的包安装程序。然后,我们可以使用以下命令安装News API库:

pip install newsapi-python flask

在我们深入探讨 Flask 新闻应用的实现细节之前,让我们先来了解一下 Flask 的基本语法。一个 Flask 应用通常由一系列路由组成,这些路由将 URL 映射到 Python 函数。这是一个简单 Flask 路由的示例−

from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
   return 'Hello, World!'

if __name__ == '__main__':
   app.run()

步骤

  • 安装 FlaskNewsAPI 客户端包

  • 导入所需的库并创建一个Flask应用实例

  • 为Flask应用程序定义一个路由,并创建一个使用News API客户端库检索新闻文章的函数。在这个函数中,使用 get_top_headlines() 方法从BBC新闻源检索头条新闻。提取每篇文章的标题、描述、urlToImage和url,并将它们附加到不同的列表上。

  • 在Flask应用程序的templates文件夹中,创建一个名为news.html的新HTML文件。利用 Jinja2 模板语法,在这个文件中的HTML模板中显示每个新闻文章的标题、描述、 urlToImage 和url。

  • 打开一个浏览器,并导航到 http://localhost:5000 在python app.py文件中查看新闻!

示例

注意 - 将<your-api-key>替换为您自己的新闻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

Note − 在与 “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 以访问新闻应用程序,这将启动本地服务器。

输出

Python 使用Newsapi的Flask新闻应用

解释

该项目由两个主要文件 “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 News来源的头条新闻。它从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编程语言,你可以快速有效地创建在线应用程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程