1.演示网站:

https://the.top

 

2.特点:

2.1. 多线程,能以迅雷不及掩耳之势完成对任务的抓取;

2.2. 任务分组进行,有些网站更新频率高(如微博,百度热搜等),而有些网站只需要每天抓取一次;

2.3. 使用python3 threading.Timer模块实现非阻塞定时任务;

2.4. 使用 FastApi框架,配合uvicorn,效率高。

 

3.说明:

听闻FastApi速度很快,为了躲避疫情,哦对了,想当年牛顿为了躲避鼠疫回到了家乡,这一年鼠疫带给人类灾难,也带给牛顿两年的思考时间,期间他提出了二项式定理、创立微积分、发现万有引力.....这些成就成为了当代中学生甚至是大学生的噩梦.......你也在躲避疫情,你能创造什么噩梦?

偏题了,咱们来说说这个无聊的项目。

国内技术博客对FastApi的说明千篇一律,你抄来,我抄去,没意思。

不过都是翻译的FastApi官方的入门文章,接下来就说说你不容易找到的,但又常用的。

 

3.1 关于启动

写完fastapi与Flask启动方式不太相同,查阅资料一般是告诉你这样启动。

uvicorn hotapi:app --reload

hostapi: 表示app所在文件名
app:FastAPI实例
reload:debug模式,可以自动重启,相当于Flask里面的debug=Ture了,你改着代码,它就自动重启一下,当然了,部署应用的时候千万不要带着了。

默认的端口是8000,但是我想要80怎么办?

查百度,查谷歌,可能我搜索资料没耐心,也没发现怎么教你,去fastapi官方查了一通,全是英文,翻译了一下也没细看。

基本操作 --help一下......

直接 uvicorn hotapi:app --reload --port 80 就行了

那么我不想通过命令行来敲这个陌生的命令,我就想python hotapi.py 一下运行,咋搞?

也不是没有办法,这也是所谓某些博客文章没有说的。 if __name__ == '__main__': uvicorn.run(app=app, host="0.0.0.0", port=80)

前提是在开头 import uvicorn 一下

3.2 关于定时任务:

分组多线程运行爬虫,例如知乎、微博等需要频繁更新的为一组,设置为 每15秒更新一次,用threading.timer模块实现;

B站等日榜,只需要每日更新一次即可,单独列为一组,同样每日运行一次;

 

4.启动方法:

4.1 执行:

python hotapi.py

4.2 也可以在命令行执行:
uvicorn hotapi:app --reload --port 80

5.数据格式

响应速度均在30ms以内。

标签: none

分类: 所有文章

添加新评论