用FastAPI加爬虫制作一个涩图API,521就这样自己过。
最近家里有台旧笔记本,我闲的没事干将电脑制作成了一个服务器。虽然没有公网IP但是我们有强大的内网穿透!加上FastAPI这个pythob的web框架制作一个中小型没有问题!
这不今天是520嘛,还能干吗?自己过咯。闲得没事干就有不一样的灵感!
FastAPI制作后端
我们用FastAPI进行后端的处理,不得不说,FastAPI真的快!不仅仅是快,而且代码量很少哦!对我这种懒到极致的男人,肯定是选它!
main.py文件
from fastapi import FastAPI
from starlette.requests import Request
from starlette.templating import Jinja2Templates
import GetRankImageapp = FastAPI()
templates = Jinja2Templates(directory="templates")@app.get("/")
async def main(request:Request):return templates.TemplateResponse('index.html',{'request':request,'RandomImage':f"{GetRankImage.main()}"})if __name__ == '__main__':import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)
看吧!这难道很多吗? 才21行!如此简单,还不快学起来!有了框架我们需要将静态文件.html文件写出来,在当前目录新建一个 templates 名字的文件夹
再到里面新建index.html文件,代码如下:
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>setu</title></head><body><p style="text-align: center;"><img src="{{ RandomImage }}" width="800"></p></body>
</html>
后端爬虫代码编写
我们所有框架都有了,但是没有后端爬虫怎么弄得到我们需要的涩图呢。于是在main.py文件目录新建文件GetRankImage.py,代码如下:
import requests
import random
from bs4 import BeautifulSoup as bs
import timedef main():init_time = time.strftime("%Y-%m-%d", time.localtime()).split('-')[0:]init_month = random.randint(1, int(init_time[1]) - 1)init_day = random.randint(1, int(init_time[-1]) - 1)if init_month < 10:month = f"0{init_month}"else:month = init_monthif init_day < 10:day = f"0{init_day}"else:day = init_daydate = f"{init_time[0]}-{month}-{day}"req = requests.post("https://rt.huashi6.com/front/works/rank_page",data={"index": random.randint(1, 4),"size": 10,"date": date})try:RandomImage = req.json()['data']['works']['datas'][random.randint(0, 9)]['coverImage']['path']print(f"爬取到图片:https://img2.huashi6.com/{RandomImage} 时间为:{date}")return "https://img2.huashi6.com/" + RandomImageexcept:print(f"ERROR:--爬取时间:{date}")return "https://www.kuko.icu/API/qlht/"
我们爬取的是网站:P站热门排行-P站图片排行榜-触站 (huashi6.com) 中的图片资源,里面包含了很多高手画的画,大家也可以将自己的爬虫更换就可以了。
将此处换成你爬虫return出的图片链接即可。
HTML代码
在当前目录新建templates文件夹用于存放html文件
index.html
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>setu</title></head><body><p style="text-align: center;"><img src="{{ RandomImage }}" width="800"></p></body>
</html>
部署服务器-内网穿透
所有代码弄好后我们就可以进行部署服务器了,大家如果有云服务器和公网ip的话就不需要进行内网穿透,如果没有公网Ip就需要内网穿透来让外网访问到网页。
我使用我家中的老电脑来搭建了一个服务器,使用NATAPP-内网穿透 基于ngrok的国内高速内网映射工具来进行内网穿透,非常简单而且还免费。
记住要填写服务器的内网ip
根据服务器的系统下载
将客户端上传到服务器上用命令启动./natapp -authtoken=你的token
记得复制token上去
上传我们的项目文件,然后用命令运行 python3 main.py 即可
效果:setu (natapp1.cc)
有bug或问题-QQ群: 706128290
用FastAPI加爬虫制作一个涩图API,521就这样自己过。相关推荐
- Python爬虫:制作一个属于自己的IP代理模块2
Python爬虫:制作一个属于自己的IP代理模块2 小编前些日子写了一篇关于IP代理模块的博客(Python爬虫:制作一个属于自己的IP代理模块 ),但是那个还需要改进,今天小编改进了一下那个模块,爬 ...
- Python爬虫:制作一个属于自己的IP代理模块
Python爬虫:制作一个属于自己的IP代理模块 Python爬虫常常会面临自己ip地址被封的情况,也许不懂的读者就只能等ip解封之后再进行接下来的操作了,为什么自己不做一个Python模块专门用于处 ...
- 基于微信小程序+爬虫制作一个表情包小程序
跟朋友聊天斗图失败气急败坏的我选择直接制作一个爬虫表情包小程序,从源头解决问题,从此再也不用担心在斗图中落入下风 精彩专栏持续更新↓↓↓ 微信小程序实战开发专栏 一.API 1.1 项目创建 1.2 ...
- 前端---HTML5如何制作一个折线图
在学习如何制作折线图,我们先学习一下canvas元素中CanvasRenderingContext2D对象提供的相关方法,通过使用坐标表换,开发者无须繁琐计算每个点的坐标,只需对坐标系整体表换即可. ...
- iOS制作一个雷达图,可用于多种场景(一)
正文开始前呢先放一张图,展示一下什么是雷达图(图片来自百度) 接下来呢,是本篇文章demo的地址,其中RadarChartView.swift可以直接用在其他的项目中. 雷达图的应用场景其实还是比较多 ...
- 用python的tkinter和爬虫制作一个天气查询窗口
翻开从前的代码,发现有段时间对 tkinter 图形化开发界面特别感兴趣,所以在这里和大家分享一下,做的一个小小的实例. 那么如何快速的创建一个GUI程序,只需要先导入Tkinter模块,创建一个窗口 ...
- 使用OpenCV制作一个动图表情包
最近和这个人聊天的过程中,她发了一张表情包,如下: 我第一反应是,我可以用学过的 OpenCV 知识实现这个效果. 说干就干,于是我花了一个小时实现了. 我的大体思路是:先拿到一张图片进行二值化处理, ...
- 如何用ps制作一个gif图
先打开ps,然后新建一个图层(文件>新建) 在图层上写个1 复制这个图层,命名为图层2 图层列表里可以看到 依次类推,搞6个图层 打开动画窗口(顶部导航栏的窗口>动画) 底部会出现动画窗口 ...
- 使用requests爬虫制作自己的天气预报“Api”
使用简单爬虫获得一些信息数据 文章目录 前言 一.准备工作,寻找目标网站 二.确定需要的数据 1.获得自己的网站cookie 2.代码实现 3.效果实现 前言 在自己开发一些网站或者公众号时,为了让自 ...
最新文章
- stream map方法_Java Stream中map和flatMap方法
- 针对安全探索的受限强化学习:原始对偶优化算法
- 动态链接库 仅有.dll文件时候的使用方法
- 初识Python-1
- Pytorch解决LSTM前向传播时报错:RuntimeError: input must have 3 dimensions, got 2
- fckeditor出现the server didn't send back a proper XML response问题的解决(因为使用了“主题”)...
- linux脚本自动 输入命令,Linux脚本自动输入密码
- html添加田字,兆加页(是加三个田是什么字)
- 计算机x4,嵌入式计算机的PCIex4保持高容量和快速数据传输的方法
- 机器学习与数据挖掘工程师的发展方向总结
- 说说技术总监的三板斧(十年肺腑之言)
- 计算机中h是几进制,16进制后面用H表示,其他进制的用什么表示
- 快速获取SAS数据集观测数
- 录音转文字电脑软件有哪些?录音如何转文字?
- 玩转华为ENSP模拟器系列 | 配置IS-IS基本功能示例
- stm32 学习--Stm32F407 SPI1 全双工DMA 收发数据
- apdl与传统计算机语言,用Ansys APDL语言实现复杂边界条件的加载
- 思科软件网络部署及命令总结
- 计算机无法启动安装程序,电脑教程:win10安装程序无法正常启动
- 手机一键还原数据还能恢复吗