本人大一自动化专业,热爱网络,热爱编程,偶尔写写 python, 躲避疫情,无聊之作....
我感觉我的博客可能阅读体验好一点: https://www.lookcos.cn/?p=466
源码 Github https://github.com/LookCos/hot-api
请求方法,http://cx.lookcos.cn/hot/ 后面加上你想获取的网站名字
http://cx.lookcos.cn/hot/zhihu 获取知乎热门
目前 有 weibo、vsite、bsite、tieba、zhihu,可扩展性强。
2.1. 多线程,能以迅雷不及掩耳之势完成对任务的抓取;
2.2. 任务分组进行,有些网站更新频率高(如微博,百度热搜等),而有些网站只需要每天抓取一次;
2.3. 使用 python3 threading.Timer 模块实现非阻塞定时任务;
2.4. 使用 FastApi 框架,配合 uvicorn,效率高。
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
就行了
无聊用 FastApi 框架写了个每日热点接口
那么我不想通过命令行来敲这个陌生的命令,我就想 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.1 执行:
python hotapi.py
4.2 也可以在命令行执行:
uvicorn hotapi:app --port 80
数据格式
响应速度均在 30ms 以内,毕竟是提前抓取好的数据直接调用,看图。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.