一个 Pythoner的 Awesome List

从大三接触 Python 到现在几乎已经有两年的接触经验了,除去中间有一年左右接私活写写 Android 和 Lamp 之外,有 Python 实际项目开发经验也算是 9 个多月,也稍微算得上是一个入门级别的 Python 程序员了。

网上不乏一些不错的 Awesome list, 但是说实话,这种类型的清单某些程度上不就相当于推荐自己没有看过的书单?

而我对自己的 Awesome List 是有要求的。

  • 不求大而全到让人摸不着头脑。
  • 项目只收纳在真实开发项目中用过, 正在学习的,并且的的确确提升了我的开发效率的。
  • 平台仅专注 Mac/Linux 上面的工具。
  • 所选工具除非特意标注,皆兼容 Py3.4+

我觉得这样的 Awesome List 比起那些涵盖各个方面的集合要好很多。

0x01. Python 库

我平时的开发以爬虫为主,Django 框架为辅,偶尔写写 Flask.

1.1. 爬虫类

爬虫其实也并不是很需要技术水平的东西,对于小规模的爬虫,获取 - 解析 - 分析 - 入库即可。

只是抓取情景变化了之后,需要做的事情就是把各个模块解耦,甚至流程也在某种程度上发生了变化,变成了获取 - 入原始网页库 - 分析 - 入中间数据库 - 再获取 - 分析 - 入关系数据库。

在这个过程中,Python 中有很多很方便的库可以使用。

爬虫框架

  • Scrapy 爬虫框架王者,配合 Scrapy-Redis 可以很快写出分布式爬虫。
  • PySpider 用过一两次,觉得总有些奇奇怪怪的小问题。值得围观,不推荐。

当然,即便如此,也并不代表不需要编写定制自己的爬虫。

Scrapy 就像大神给你的组装机,是个通用型爬虫,抓取一些简单的网站很好,对付一些比较复杂反爬虫机制比较强的网站,用起来总是束手束脚的,感觉还是需要自己动手组合各个模块进行抓取的。

我是觉得 Scrapy 这种异步的程序调试起来是很费事情的,如果我的想法有错误的话,还请不吝赐教。

所以,下面是我在抓取解析分析入库这个流程中用到的工具第三方库:

爬虫分析网站常用:

  • phantomjs
  • chrome
  • charles 用于抓包和测试

爬虫获取常用:

  • requests
  • multiprocessing
  • threading
  • asyncio Py3.5 异步库

爬虫解析常用:

  • 正则表达式
  • json
  • nodejs 配合 v8 引擎可以复用一部分 js 代码得出真实数据。
  • beautifulsoup
  • lxml
  • pyquery
  • w3lib 这也是 scrapy 用的库推荐
  • pytesseract 简单的图像识别
  • click 用于编写命令行工具

数据库驱动

  • mysqlclient-python
  • psycopg2
  • PyMongo
  • redis-py

数据清洗与入库

数据提取与可视化

  • xlsxwriter
  • Matplotlib
  • Seaborn
  • ECharts 虽然不是 Python 语言的,但是可以嵌入到 IPython Notebook 中进行可视化。详情请参照我在简书上写的这篇文章 IPython Notebook 引入 ECharts 做可视化

爬虫的部署与监控:

  • psutil
  • supervisor
  • Ansible, Ansible 快支持 Py3 了,所以值得关注。将自己平时部署更新的脚本转成 Ansible 脚本的话,大大提高了部署的速度与准确度。

1.2. 网站开发类

  • Django
  • django-autocomplete-light
  • django-celery
  • django-compressor
  • django-coverage-plugin
  • django-crispy-forms
  • django-debug-toolbar
  • django-environ
  • django-extensions
  • django-filebrowser
  • django-filter
  • django-formtools
  • django-grappelli
  • django-guardian
  • django-import-export
  • django-model-utils
  • django-mptt
  • django-redis
  • django-reversion
  • djangorestframework
  • django-compressor
  • django-pipeline

由于并非专注开发 Flask 程序,所以不推荐 Flask 相关资源。

1.3. 其他 Python 库

命令行工具:

  • httpie
  • mycli 如果现在进入 MySQL 终端进行查询的话,首选 MyCLI

小工具:

  • douban.fm 终端 douban.fm
  • douyu.fm 这是我写的一个关于斗鱼 TV 弹幕获取的终端小程序

0x02. 网站 / 订阅

对于网站与订阅,求精不求多。

个人比较看东西找书或者是找代码的时候有两个习惯:

  • 找牛的人看的资料,而不仅仅是牛人的资料。牛人一般情况下推荐的资料也是上上作品。类似于 PageRank, 一直看下去收获相当大。
  • 求精不求多。毕竟技术日新月异,学好一两个领域足矣。

0x03. 书单

其实程序员的阅读量并不完全在纸质书上,主要在各种技术文章上,在各种官网的 Tutorial,Guide,API, 和 Source Code 上面,但是有一些书籍多读几遍还是很有帮助的。

  • [x] 鸟哥的私房菜 两本
  • [x] Python Cookbook
  • [x] Python 算法教程
  • [x] Python 可视化编程
  • [x] Python Web 开发实战
  • [x] Python For Data Analysis
  • [x] MySQL 技术内幕 : SQL 编程
  • [x] MySQL 技术内幕 : InnoDB 技术内幕
  • [x] 深入浅出 MySQL
  • [x] SQL 反模式
  • [x] Linux 集群和自动化运维
  • [x] Practical Vim
  • [x] 大型网站技术架构。核心原理与案例分析

0x04. 进阶源码单

书单是进阶的读者推荐给入门读者的读物。
源码单是进阶的程序员推荐给入门读者的读物。

下面是董明伟推荐的两个源码单:

初级 Pythoner 源码单

  1. kennethreitz/pip-pop: Tools for managing requirements files.
  2. kennethreitz/envoy: Python Subprocesses for Humans™.
  3. kennethreitz/records: SQL for Humans™
  4. mitsuhiko/pluginbase: A simple but flexible plugin system for Python.
  5. mitsuhiko/pipsi: pip script installer
  6. mitsuhiko/unp: Unpacks things.
  7. chrisallenlane/cheat
  8. jek/blinker: A fast Python in-process signal/event dispatching system.
  9. mitsuhiko/platter: A useful helper for wheel deployments.
  10. kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &c.

进阶 Pythoner 源码单

  1. faif/python-patterns 使用 Python 实现一些设计模式的例子。
  2. pallets/werkzeug flask 的 WSGI 工具集。其中包含了实现非常好的 LocalProxy,cached_property,import_string,find_modules,TypeConversionDict 等。
  3. bottlepy/bottle 阅读一个 Web 框架对 Web 开发就会有更深刻的理解,flask 太大,bottle 就 4k 多行,当然如果你有毅力和兴趣直接看 flask 是最好了的。
  4. msiemens/tinydb 了解用 Python 实现数据库。
  5. coleifer/peewee 了解 ORM 的实现。
  6. pallets/click click 已经内置于在 flask 0.11 里,提供命令行功能,值得阅读。

以及一个非常神奇的进阶项目 500lines
https://github.com/aosabook/500lines

0xEE. 结论

这就是我,一个 Python 爬虫工程师常用的以及现在主要在学习的关于 Python 方面的 Awesome List. 整理出来分享给大家。

本文不定期更新

生命苦短,我用 Python

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容