0%

IBM cloud免费服务器python fastapi搭建线报网站

之前有一个叫IBMYes的项目,是利用IBM Cloud免费云服务器搭建科学上网的V2ray服务,江湖传闻速度很快搭配CF可上4k。

然鹅我部署之后,上网貌似不成功,由于有更方便稳定的免费服务就没有过多的折腾,刚好看了几天fastapi的教程,想着用这个试试搭个线报网站。

爬取即时线报,推送到电报群进行提醒,通过js调用fastapi相关数据到html页面进行展示。

效果展示:最新线报

注册IBM免费云服务器

网址: IBM Cloud

无须信用卡,只需要邮箱即可。

注册很简单,略过不提。

注册成功登录之后,创建一个Cloud Foundry 应用程序,选择达拉斯 256M python

安装IBM客户端

具体步骤看这里
安装,登录等等。。。

Github Actions 设置自动开机

按照IBMYes项目相关设置,设置10天重启一次服务即可。

线报采集

用python写一个简单的爬虫,大致代码如下,四个目标网站,利用requests+lxml库获取目标网站线报的url和title并写入数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
kxd_api = 'https://www.kxdao.net/forum-42-1.html'
wgzj_api = 'http://www.wgzj.cn/bbs/forum-2-1.html'
xb0818_api = 'http://www.0818tuan.com/list-1-0.html'
leyu_api = 'https://bbs.leyuz.net/f/xianbao'

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}

class Spider(object):
def __init__(self,url=None):
if url!=None:
self.url = url
self.res = requests.get(url,headers=headers)
#self.res.encoding = "utf-8"
self.soup = etree.HTML(self.res.text)

#科学刀最新线报
def spider_kxd(self):
site = '科学刀'
soup = Spider(kxd_api).soup
for soup_a in soup.xpath('//a[@class="s xst"]'):
title = soup_a.text
link = soup_a.get('href')
if Message.get_or_none(Message.link==link):
pass
else:
Message.create(title=title,link=link,site=site)

如果需要采集之后推送到电报群或微信群使用相应的telegram-python-bot或wxpy库即可。

fastapi

fastapi字面意思是一个快的api库,通过fastapi将线报信息转换为api接口,通过网页进行调用。
大致代码如下:

1
2
3
4
5
6
7
8
@app.get("/xb/")
def xb(request: Request):
p = Message.select(Message.title,Message.link).order_by(Message.pubtime.desc()).limit(10)
data = []
for q in p:
msg = {'title':q.title,'link':q.link}
data.append(msg)
return data

部署

创建一个manifest.yml文件,内容如下:

1
2
3
4
5
6
---
applications:
- name: yourname
random-route: true
memory: 256M

创建一个Procfile,内容如下:

1
web: gunicorn -w 3 -k uvicorn.workers.UvicornWorker main:app

创建一个requirements.txt,内容为你所项目所使用的各类依赖库。

具体步骤看这里