应用框架类

Django

从推荐,到放弃,再到重新推荐。

体验可以类比为Linux界的ubuntu。

推荐大部分人从这里开始,除了可以获得更快更多的成就感,牢记DRY(Dont repeat yourself)的原则,别动不动就造轮子。

特点是开箱即用,自带一个默认的admin后台,一套ORM,一套cli command,配套django rest framework用于前后端解耦。一些默认的规则,减少了不少的配置门槛。

缺点:大规模分布式应用中,默认的规则有点鸡肋(还是得有不少配置),但是在局部依旧适用。

Flask

从倾心,到放弃,到理智看待。

体验可以类比Linux界的Debian。

推荐想从零自己组装所有部件的场景。DIY是一种乐趣,但是坑也会不少。虽然Flask的周边插件很多,但是背后对应的就是同样多的维护成本,靠个人开发者支撑是有一定难度的。

特点是Micro内核,DIY灵活,可以造出自己心仪的一套框架,制定自己的一些规则。到最后会发现Django的一些策略,做得很精巧,大体上都相似,结果就是自己体验了一会造轮子的快感。

缺点:Kill Time,坑多,适合锻炼填坑力。

Wechatpy

用的最顺心的一套公众号开发框架,简洁明了。

搭载Celery,可以很方便完成三方平台的开发工作。

如果想用python开发公众号应用,首个推荐的就是这个框架。

Itchat

在腾讯没有放弃网页版微信时,可以用这个定制很多好玩的应用。如果网页版的微信一直壮大,江湖上估计也会少了很多卖接口的生意。很多代表作如WeTool、群控可能也不会出现。

目前对一些比较早注册的微信还可以尝试玩玩,但不建议多用,小心因为封号导致失联……

主流的IM工具,除了微信,好像都有Bot类的应用,比如TG、FB、QQ。
但是观察到现实情况有点糟糕,一旦引入bot,就容易陷入广泛的营销,最后破坏社交本身。

工作归工作,生活归生活,看到企业微信好像有这个打算,比如自动回复功能,且看发展态势。

HTTP & HTML处理类

requests

最容易上手的一个HTTP库,最长写的三句话,可以搞定json数据获取:

  1. u = 'http://abc.efg/hij'
  2. r = requests.get(u)
  3. j = r.json() if r.status_code == requests.codes.ok else {}

很多人把requests库和selenium放到一起对比,其实没啥可比性。
requests主要实现了HTTP的处理,其他比如HTML、JSON的处理都是交给其他类库,比如lxml, BeautifulSoup等,后面这些工具才是对内容的处理。

而selenium是一个浏览器的调用工具,通过接口去调用chrome、Firefox等浏览器,模拟输入获得输出,所以它操作的对象是浏览器,处理HTTP和内容的是浏览器自己。

selenium的作者后来去了Google,Google出了一套puppeteer,采用nodejs接口操作没有GUI界面的Chrome浏览器。挺好玩,不过不在Python范围之内。
更新:发现了python接口的puppeteer:pyppeteer,用来爬了下抖音,可以应对抖音对无头爬虫的识别封锁。

scrapy

scrapy是个爬虫框架,内置了一套处理流程,也可以通过配置和Django结合起来用。

早期的网页,都是HTML多,没有现在那么多的JS异步调用。在处理HTML及其链接时,scrapy很适合。
在处理restful应用时,会感觉有些啰嗦,不管怎么说,框架都是可以通用的。

lxml

lxml是用来解析XML和HTML的类库,相比BeautifulSoup,我更喜欢用XPath方式定位元素。

分布式任务类

Celery

Celery是一套分布式任务框架。

配置和调测稍微麻烦些,但搞定后就轻松许多。

celery把分布式任务调度里的细节很好地解耦开,配置完成后,就可以专注在业务实现上。

数据分析类

Pandas

数据分析神器!金融行业用的比较多,除了R就是它。

可以理解为编程版的Excel,内存版的数据库,更灵活更强大。

整个Excel表,一个函数就读取加载完了。也可以直接读取各类数据库。

可以用外部的科学计算类库,实现比如矩阵计算、微积分等操作。

配合绘图工具,也可以绘制报表图片等。