之前有一个叫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.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,内容为你所项目所使用的各类依赖库。
具体步骤看这里