在日常数据采集工作中,我们常通过爬虫获取各类数据,但零散的爬虫脚本难以直接复用。借助 Flask 轻量框架,可快速将爬虫数据封装为标准化 API 接口,实现数据统一输出、便捷调用,方便对接前端页面、数据分析工具或其他业务系统,完成从数据采集到数据服务的升级。
一、环境准备
首先搭建基础运行环境,安装所需依赖库:
- Flask:轻量 Web 框架,用于搭建 API 接口
- Requests:用于发送网络请求,实现基础爬虫功能
执行安装命令:
bash
运行
pip install flask requests
二、基础接口搭建
创建项目文件,编写最简 Flask 服务,实现健康检查接口,验证服务是否正常运行:
python
运行
from flask import Flask
import requests
app = Flask(__name__)
# 健康检查接口
@app.route('/')
def index():
return {"code": 200, "msg": "爬虫API服务正常运行"}
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
运行代码后,访问http://127.0.0.1:5000/,若返回 JSON 格式提示信息,说明基础服务搭建成功。
三、爬虫逻辑集成
编写基础爬虫函数,获取目标站点公开数据,再通过接口对外提供数据。以获取简单文本数据为例:
python
运行
from flask import Flask, jsonify
import requests
app = Flask(__name__)
def get_spider_data():
"""基础爬虫函数:获取公开数据"""
try:
url = "此处替换为目标数据地址"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
# 模拟数据解析,实际场景替换为真实解析逻辑
data = {
"title": "爬虫采集数据",
"content": "测试数据内容",
"source": url
}
return data
except Exception as e:
return {"error": f"数据采集失败:{str(e)}"}
# 爬虫数据接口
@app.route('/api/data', methods=['GET'])
def api_data():
result = get_spider_data()
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
访问http://127.0.0.1:5000/api/data,即可获取标准化 JSON 格式的爬虫数据。
四、带参数接口开发
实际应用中,接口常需要接收参数,实现按需采集。以下为支持关键词查询的参数化接口:
python
运行
from flask import Flask, jsonify, request
import requests
app = Flask(__name__)
@app.route('/api/search', methods=['GET'])
def search_data():
# 获取GET请求参数
keyword = request.args.get('keyword', '')
page = request.args.get('page', 1, type=int)
if not keyword:
return jsonify({"code": 400, "msg": "请输入查询关键词"})
try:
# 模拟带参数的爬虫请求
data = {
"keyword": keyword,
"page": page,
"list": [
{"id": 1, "title": f"{keyword}相关内容1"},
{"id": 2, "title": f"{keyword}相关内容2"}
],
"total": 20
}
return jsonify({"code": 200, "data": data})
except Exception as e:
return jsonify({"code": 500, "msg": f"查询失败:{str(e)}"})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
调用示例:http://127.0.0.1:5000/api/search?keyword=测试&page=1,可根据传入参数返回对应数据。
五、接口优化与注意事项
- 异常处理:完善请求超时、解析失败、参数错误等异常捕获,避免服务崩溃
- 请求头配置:添加合理 User-Agent,降低被目标站点拦截概率
- 访问限制:可添加延时控制、IP 代理,避免高频请求对目标站点造成影响
- 跨域支持 :对接前端时,安装
flask-cors解决跨域问题 - 服务部署:正式环境可使用 Gunicorn+Nginx 部署,提升稳定性
六、总结
通过 Flask 将爬虫数据 API 化,无需复杂框架配置,几行代码即可完成从数据采集到接口服务的转换。这种方式轻量化、易扩展,适合个人项目、小型数据平台、临时数据接口等场景,能大幅提升爬虫数据的使用效率与复用性,快速实现数据价值转化。