使用 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