📜  在 Flask 中使用 Web Scrapping 创建 Cricket Score API(1)

📅  最后修改于: 2023-12-03 14:50:55.087000             🧑  作者: Mango

在 Flask 中使用 Web Scraping 创建 Cricket Score API

在这篇文章中,我将介绍如何在 Flask 中使用 Web Scraping 创建一个简单的 Cricket 得分 API。Flask 是基于 Python 的轻量级 Web 框架,它使用简单并易于学习的语法语言,Web Scraping 则是一种通过解析 HTML 页面来提取数据的技术。

准备工作

我们首先需要安装 Python,Flask 以及 Beautiful Soup。Flask 和 Beautiful Soup 都可以通过 pip 安装。在终端中,运行以下命令:

pip install Flask
pip install beautifulsoup4
提取数据

首先,我们需要找到一个网站,我们可以从中提取 Cricket 得分数据。在这里,我们将使用 espncricinfo.com 这个网站。这个网站提供了大量的 Cricket 得分数据。

在这里,我将提取某一场比赛的得分数据。以下是要提取数据的网址:

https://www.espncricinfo.com/series/england-tour-of-south-africa-2020-21-1239528/south-africa-vs-england-2nd-test-1239533/full-scorecard

现在我们需要通过 Beautiful Soup 来提取这个页面的数据。在 Python 文件中添加以下代码:

from bs4 import BeautifulSoup
import requests

url = 'https://www.espncricinfo.com/series/england-tour-of-south-africa-2020-21-1239528/south-africa-vs-england-2nd-test-1239533/full-scorecard'

res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')

scorecards = soup.find_all('div', {'class': 'card'})

score_data = []

for scorecard in scorecards:
    for row in scorecard.find_all('tr'):
        cols = row.find_all('td')
        cols = [ele.text.strip() for ele in cols]
        score_data.append(cols)

print(score_data)

此代码将提取所需得分数据,并将每行数据存储在一个列表中。运行 Python 文件,确保您从网站中提取了所需的数据。

创建 Flask 应用程序

现在我们需要在 Flask 中创建一个 API,通过这个 API,我们将获取所提取的 Cricket 得分数据。在 Python 文件中添加以下代码:

from flask import Flask
from flask import jsonify

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, World!'

@app.route('/score', methods=['GET'])
def score():
    # add code to scrape data from website
    score_data = [['South Africa', '1st Innings', '155', 'Player A', '22', 'Player B', '30', 'Player C', '50'], ['England', '1st Innings', '269', 'Player D', '45', 'Player E', '60', 'Player F', '50']]

    return jsonify(score_data)

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

以上代码创建了一个 Flask Web 应用程序,并定义了两个路由:

  • / 返回字符串 "Hello, World!"。
  • /score ,这是我们的 API 端点,它将提供所得分数据的 JSON 格式。

虽然在这里我们将返回硬编码数据,但你可以轻松地将其替换为从网站中提取的数据。

测试 API

在您运行 Python 文件时,Flask 应用程序将启动在本地主机上。在浏览器中输入以下 URL:http://127.0.0.1:5000/score

这将返回 JSON 格式的数据,包括 Cricket 得分数据。现在你已经成功地在 Flask 中创建了一个 Cricket 得分 API!

结论

在本文中,我们已经介绍了如何在 Flask 中创建一个简单的 Cricket 得分 API。我们通过使用 Beautiful Soup 技术从 espncricinfo.com 网站提取数据。接着,我们使用 Flask 和 jsonify 帮助我们构建了一个 API 端点,该端点返回提取数据的 JSON 格式内容。

此外,Web Scraping 具有许多应用场景,这里只是其中一个示例。您可以将如此强大的技术应用于您的项目中,其中最重要的一点是,请确保您在提取数据时遵循网站所有权和隐私政策。