首页 存档 技术 查看内容

一个 Pythoner的 Awesome List

2018-3-30 13:00 |来自: 互联网 356 0

摘要: 戳蓝字关注我们! 作者 无与童比 原文地址:http://www.jianshu.com/p/3e79f8565ff7# 本文为原作者原创作品,转载需授权 从大三接触 Python 到现在几乎已经有两年的接触经验了,除去中间有一年左右接私活写写 Andr ...

戳蓝字关注我们!


作者 无与童比

原文地址:http://www.jianshu.com/p/3e79f8565ff7#

本文为原作者原创作品,转载需授权


从大三接触 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-**

  • 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 ** 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,

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部