使用 Flask 快速构建豆瓣图书/电影海报 WebAPI
新年新气象,最近一直在折腾新博客,准备好好装修一番。
在 旧站 中,有一个豆瓣图书/电影的展示页面,感觉还不错。
于是就想在新网站中也加入该元素,另一方面也可以促进自己多阅读,多观影。
一、初步探索
emmmm,怎么引入呢?直接开发插件?还没学会 halo 的插件如何开发❌
先去 GitHub 上搜搜,看看有没有相关的项目吧?好主意✅
于是便找到了该仓库 传送门
仓库已经是三年前创建的了,先看看代码可不可以正常跑吧!
果然。。。有 Bug,哈哈哈!
二、解决 Bug
打印个状态码,先初步诊断一下,看看 Bug 到底出在哪?
运行一下!
418,还是第一次碰到这个状态码,Google 一下!
我是一个茶壶,哈哈哈,IT 技术充满了乐趣。
阿这,不太理解。。。前辈虽然写了UA列表
,但是在请求的时候竟然不加到headers
里去,怪不得豆瓣检测出来你是个爬虫,哈哈。
纠正一下吧!
完美运行啦!
但是。。。
三、新的需求
每分享一个书籍/电影都要运行此代码生成海报?
那为啥不干脆直接开发个接口,只要像下面这样引入代码就可以直接调用了呢?
![](https://douban.sunguoqi.com?params= DOUBANURL)
四、技术探索
需求存在,开始探索实现方案。
将 Python 脚本做成 API?
只需要创建一个 Web 应用就可以啦。当用户附带正确的参数访问指定路由,就可以触发相应逻辑,最后返回数据。
那用什么技术来编写这个 Web 应用呢?
啊哈,有现成的 Web 框架,比如 Spring Boot,Django,Flask …
Spring boot
?
JavaWeb 那一套,对 Java 不熟,还没实际开发过,上手应该有点小困难❌
Django
?
Django 自学过一段时间,比较容易上手,但 Django “太健全了”,内置后台,数据库 ORM 映射,模版机制,表单处理,会话…,用在这个脚本上会不会略显笨拙,感觉有点大材小用了⏱️
Flask
?
听说 Flask 比较轻量,看看官网,好家伙,五行输出 hello world,我看行,就它了✅
五、正式开发
1、失败尝试
本来想在Windows
上用VScode
开发好后再上传到服务器上来着,奈何配置开发环境就配置了好长时间。
一是在写入Flask_App
到Windows
系统环境变量时遇到了问题,二是在VSCode
上运行Flask
出现了问题。。。
算了,不配了,直接上服务器。
2, Hello world
在Ubuntu
上轻松配置好了环境,然后敲入代码(复制粘贴)
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
你好,世界!就是这么优雅🎉
3、编写路由逻辑
经过一番猛如虎的操作后,我在原代码中加入了如下代码,于是大功告成!
...
import flask
from flask import send_file
def main(url):
...
return api_img_path
@app.route('/',methods=['get'])
def img():
url = flask.request.args.get('url')
img = main(url)
return send_file(img)
当然,其实在此期间还经历了一番猛如虎的调试过程🥹