📅  最后修改于: 2023-12-03 14:49:47.512000             🧑  作者: Mango
在这个教程中,我们将使用 WebScraping 和 Flask 为 GeeksforGeeks 网站上的用户数据设置 API。我们将使用 Python 作为编程语言,并使用 Beautiful Soup 和 Requests 库进行 WebScraping。Flask 是一个方便的 Web 开发框架,可以轻松创建 Web 应用程序和 API。
我们的目标是为 GeeksforGeeks 网站上的用户数据设置 API,以便用户可以通过 API 获取其他用户的详细信息。我们将使用以下 API 端点:
/users
:获取所有用户的列表。/users/{username}
:获取特定用户的详细信息。首先,我们需要安装必要的库。我们将使用以下命令安装它们:
pip install flask requests beautifulsoup4
让我们从 GeeksforGeeks 网站中获取用户数据。为了获取所有用户的列表,我们将使用 https://auth.geeksforgeeks.org/user/list_all_users.php 这个 URL。我们将向此 URL 发送 GET 请求,该 URL 将返回包含所有用户 ID 的 HTML 页面。然后,我们将使用 Beautiful Soup 库解析 HTML 页面以获取所有用户的 ID 和用户名。
import requests
from bs4 import BeautifulSoup
def get_user_list():
user_list_url = 'https://auth.geeksforgeeks.org/user/list_all_users.php'
response = requests.get(user_list_url)
soup = BeautifulSoup(response.text, 'html.parser')
users = []
for option in soup.find_all('option'):
user_id = option['value']
username = option.text.strip()
if user_id and username:
users.append({'id': user_id, 'username': username})
return users
接下来,我们需要获取特定用户的详细信息。为此,我们将使用 https://auth.geeksforgeeks.org/user/profile.php?id=USER_ID 这个 URL。将 USER_ID 替换为要获取详细信息的用户的 ID。这个 URL 将返回包含用户详细信息的 HTML 页面。我们将使用 Beautiful Soup 库解析 HTML 页面以获取特定用户的详细信息。
def get_user_details(user_id):
user_profile_url = f'https://auth.geeksforgeeks.org/user/profile.php?id={user_id}'
response = requests.get(user_profile_url)
soup = BeautifulSoup(response.text, 'html.parser')
name = soup.find('input', {'name': 'realname'})['value']
email = soup.find('input', {'name': 'email'})['value']
country = soup.find('input', {'name': 'country'})['value']
return {'id': user_id, 'name': name, 'email': email, 'country': country}
现在,我们将使用 Flask 构建 API。在构建 API 之前,我们需要导入所需的库和函数。
from flask import Flask, jsonify
from webscraping import get_user_list, get_user_details
app = Flask(__name__)
我们将使用 @app.route
来定义 API 端点。
@app.route('/users')
def users():
users = get_user_list()
return jsonify(users)
@app.route('/users/<user_id>')
def user(user_id):
user_details = get_user_details(user_id)
return jsonify(user_details)
在上面的代码中,/users
和 /users/<user_id>
是 API 端点。users
和 user
是函数名称。这意味着当用户发送 GET 请求到 /users
端点时,将调用 users
函数,并返回包含用户列表的 JSON 响应。同样,当用户发送 GET 请求到 /users/<user_id>
端点时,将调用 user
函数,并返回包含特定用户详细信息的 JSON 响应。其中,<user_id>
是动态参数,它将被实际的用户 ID 值替换。
在 Flask 应用程序中添加以下代码以启动服务器。
if __name__ == '__main__':
app.run(debug=True, port=5000)
在上面的代码中,debug=True
可以启用调试模式,这对开发和测试非常有用。port=5000
可以指定 Flask 应用程序要监听的端口号。
现在,我们将启动 Flask 服务器并测试 API。
首先,运行以下命令以启动 Flask 服务器。
python app.py
然后,使用 curl 命令测试 API。发送 GET 请求到 /users
端点以获取所有用户的列表。
curl -i http://localhost:5000/users
响应应该是这样的。
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 542
Server: Werkzeug/1.0.1 Python/3.8.2
Date: Sun, 11 Oct 2020 08:17:01 GMT
[
{
"id": "702978",
"username": "abhi8569"
},
{
"id": "766088",
"username": "samson_adjei"
},
...
]
发送 GET 请求到 /users/702978
端点以获取特定用户的详细信息。
curl -i http://localhost:5000/users/702978
响应应该是这样的。
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 96
Server: Werkzeug/1.0.1 Python/3.8.2
Date: Sun, 11 Oct 2020 08:18:23 GMT
{
"id": "702978",
"name": "Abhishek Ahmad",
"email": "abhi8569@yahoo.co.in",
"country": "India"
}
至此,我们已经成功为 GeeksforGeeks 网站上的用户数据设置了一个简单的 API。
在本教程中,我们了解了如何使用 WebScraping 和 Flask 为 GeeksforGeeks 网站上的用户数据设置 API。我们已经构建了一个简单的 API,用于获取特定用户的详细信息。我们使用 Requests 库发送 GET 请求,并使用 Beautiful Soup 库解析 HTML 页面以获取用户数据。最后,我们使用 Flask 框架构建了一个简单的 Web 应用程序,以便我们可以使用 HTTP 请求发送和接收用户数据。