📜  使用 Flask 框架的维基百科搜索应用程序Python(1)

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

使用 Flask 框架的维基百科搜索应用程序Python

本文介绍如何使用 Flask 框架实现一个简单的维基百科搜索应用程序。通过该应用程序,用户可以在页面上输入关键字,并将其发送给维基百科的API来搜索相关文章标题。

环境准备

在开始构建此应用程序之前,您需要安装Python和Flask框架。您可以使用pip来安装Flask,只需在终端中运行以下命令即可:

pip install Flask
应用程序代码
from flask import Flask, render_template, request
import wikipedia

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('home.html')

@app.route('/results', methods=['POST'])
def results():
    query = request.form['query']
    search_results = wikipedia.search(query)
    return render_template('results.html', search_results=search_results)

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

代码解释:

  1. 首先我们导入了Flask和wikipedia模块:

    from flask import Flask, render_template, request
    import wikipedia
    
  2. 然后,我们初始化应用程序:

    app = Flask(__name__)
    
  3. 我们创建一个名为“home”的路由,这是该应用程序的主页路由,它返回一个HTML模板:

    @app.route('/')
    def home():
        return render_template('home.html')
    
  4. 到此为止,我们已经创建了主页路由。我们现在需要添加一个新的路由以处理用户的搜索请求。我们将路由称为“results”:

    @app.route('/results', methods=['POST'])
    def results():
        query = request.form['query']
        search_results = wikipedia.search(query)
        return render_template('results.html', search_results=search_results)
    

    在该路由的代码中,我们首先从客户端获取查询参数。然后,我们使用wikipedia搜索方法来搜索相关文章标题,并将其保存在一个名为search_results的变量中。最后,我们将它们传递给名为“results.html”的另一个HTML模板,以在用户的页面上显示搜索结果。

  5. 我们在应用程序的尾部检查,如果该代码是直接运行的,则启动应用程序:

    if __name__ == '__main__':
        app.run(debug=True)
    
应用程序模板

我们需要创建两个HTML模板:

  1. home.html:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Search Wikipedia</title>
    </head>
    <body>
        <form action="{{ url_for('results') }}" method="post">
            <input type="text" name="query" placeholder="Search Wikipedia...">
            <button type="submit">Search</button>
        </form>
    </body>
    </html>
    
  2. results.html:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Search Results</title>
    </head>
    <body>
        <h1>Search Results</h1>
        <ul>
            {% for result in search_results %}
                <li><a href="{{ wikipedia.page(result).url }}" target="_blank">{{ result }}</a></li>
            {% endfor %}
        </ul>
    </body>
    </html>
    

这些模板使用Flask的Jinja2模板引擎来渲染HTML。在home.html模板中,我们使用一个表单,以便用户输入查询,并在提交查询时将数据发送到search的POST路由。在results.html模板中,我们迭代搜索结果并将它们显示为一组链接。

运行应用程序

要启动搜索应用程序,请执行以下命令:

python app.py

然后,您可以在浏览器中打开http://127.0.0.1:5000/,输入关键字并单击“搜索”按钮,以查看与该关键字相关的维基百科文章标题。

结论

在本文中,我们了解了如何使用Flask框架和Python在Web应用程序中实现一个简单的维基百科搜索应用程序。在以后的工作中,我们可以扩展该应用程序,以便搜索维基百科中的具体文章,同时在结果页面上显示文章的内容。