一些让你敢到相见恨晚的Python库(一)

作者:赖明星 链接:

https://www.zhihu.com/question/24590883/answer/134253100

下面给大家推荐几个我用过的,并且特别好用的项目,而不是简单的贴一下awesome python。相信很多人看完awesome python以后,只是简单的收藏一下,并没有很多帮助。

1. yagmail

Python官网上发邮件的例子(Examples - Python 2.7.13 documentation),大家感受一下。反正我看到这一堆的import就已经被吓退场了。

如果使用yagmail,发送一个带附件的邮件,只需要2行代码:

2. requests

requests很多人都推荐过了,不过可能一些同学感受不到requests到底好在哪里。我们就以官网的例子为例简单说明,在没有request之前,如果我们要请求https://api.github.com/user,需要像下面这样:

用requests以后,做同样的事情,我们可以这样(注意,前3行代码等于上面一整段代码):

3. psutil

psutil是用来获取操作系统监控以及进程管理的,如果你正在写一个监控系统(或脚本),赶紧去试试。这么说吧,我曾经使用psutil把网易内部的一个监控模块,从1000+行重构到了100+行。

我这里推荐的几个库,可能yagmail对最多人有用。而psutil,对专业的人士最有用。如果你要写一个监控系统,不使用psutil的话,只能直接去/proc目录下读取想用的文件进行计算,或者执行iostat、vmstat、df等linux命令获取命令输出,不管哪一种方法,都要处理很多繁琐的细节。有了psutil以后,就轻松多了。贴段代码大家感受一下:

此外,使用越来越广泛的监控工具glances(如果没用过,要不现在就是试试?),就是用psutil收集相关数据的。

4. BeautifulSoup

如果你写爬虫,还在用XPath解析HTML,那赶紧用用BeautifulSoup,比XPath好用一百倍;如果你还在用正则表达式从HTML中获取内容,BeautifulSoup能让你好用到哭。(补充:评论里大家都说XPath更好用,难道是我思维方式和大家不一样?)

BeautifulSoup是用来解析HTML的,特点就是好用,有人吐槽BeautifulSoup慢?我不在乎BeautifulSoup比XPath慢多少,我只知道,我的时间比机器的更宝贵。

例如,要找到页面中所有的links,如下所示:

例如,我在编写知乎的爬虫的时候,对于每一个用户的”关注”页面,对于每一个关注对象,有如下的tag:

所以,解析单个关注的用户代码如下所示:

有了BeautifulSoup以后,爬虫操作就变得特别简单了。脏活累活别人都帮忙做好了。

5. utils

除了开源的库以外,还有些开源项目的DataStruct.py helper.py utils.py文件,也值得看一看。里面很多好东西,都是可以直接拿过来用的。 <img src="https://pic4.zhimg.com/v2-0f15c1bee04b1ae03bbc0ef1eb13d10f_b.jpg" data-rawwidth="652" data-rawheight="600" class="origin_image zh-lightbox-thumb" width="652" data-original="https://pic4.zhimg.com/v2-0f15c1bee04b1ae03bbc0ef1eb13d10f_r.jpg">

我举几个例子。

  • requests中的CaseInsensitiveDict(https://github.com/kennethreitz/requests/blob/v1.2.3/requests/structures.py#L37-L109),大家看名字就知道什么意思了,我就不多说了。
  • werkzeug中的LocalProxy、ImmutableList、ImmutableDict(https://github.com/pallets/werkzeug/blob/master/werkzeug/datastructures.py#L128),其中ImmutableList和ImmutableDict大家一看就知道是什么意思,这里要说的是LocalProxy,使用LocalProxy,分分钟实现代理模式。
  • web.py的utils.py中各个函数和类都值得看一看(https://github.com/webpy/webpy/blob/master/web/utils.py#L48),不但可以了解好用的函数和数据结构,而且,还能够学习一下高手的Python代码。例如:

ps:web.py的作者是亚伦·斯沃茨(Aaron Swartz),一位年少成名的计算机天才,著名社交网站Reddit联合创始人。致力于网络信息开放,却因涉嫌非法侵入麻省理工学院(MIT)和JSTOR(全称Journal Storage,存储学术期刊的在线系统)被指控,将受到最高35年监禁和100万美元罚款。该案正在认罪辩诉阶段,而亚伦·斯沃茨却于2013年1月11日在其纽约布鲁克林的寓所内,用一根皮带上吊自杀,尸体随后被女友发现,年仅26岁。

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑白安全

告诉你怎么样用WIFI逐步渗透至内网

这个是我帮助朋友公司做的一个渗透测试,在这之前,并没有收到任何相关信息,唯一的可用渠道就是WIFI,而对方的要求就是希望我测试一下,整个网络是否安全,是否存在漏...

1274
来自专栏FreeBuf

威胁远胜“心脏出血”?国外新爆Bash安全漏洞

这几天Linux用户们可能不能愉快地玩耍了,红帽(Redhat)安全团队昨天爆出一个危险的Bash Shell漏洞。其带来的威胁可能比早前披露的“心脏出血”漏洞...

2097
来自专栏人人都是极客

开源飞控StarryPilot无人机的制作

近年来无人机应用市场日趋火热,无人机开始被应用在多个领域之中,比如航拍,植保,运输,安防等。随着应用场景的增加,对于无人机的大脑一飞控,的性能和功能要求也变得越...

1231
来自专栏机器人网

国外DIY牛人教你做Wifi机器人(最全教程)

一、前言 Wifi机器人(Wifi Robot):其实是一辆能通过互联网,或500米以外的笔记本无线设施来远程控制的遥控汽车。由于在车上配备了一个网络摄像...

3225
来自专栏FreeBuf

看我如何hack BlackHat:使用BCard API枚举注册与会者

BlackHat是世界上最大的网络安全活动之一,每年夏天都会在美国拉斯维加斯举行。那些参加 BlackHat 的人可能已经注意到他们的徽章包含 NFC 标签。此...

983
来自专栏闰土大叔

代码里注释写太多,会挨打吗?

前几天,有个同行朋友在我的微信上留言,问我项目代码里注释写太多会挨打吗?顺手还给我甩了一张截图,上面密密麻麻的全是手工注释。

4514
来自专栏Fundebug

Fundebug上线微信小游戏错误监控!支持自动截屏!

想必大家都玩过“跳一跳”吧?刷排行榜的感觉是不是很好啊!还有“知乎答题王”呢,在智力上碾压老铁简直太棒了!

39814
来自专栏编程一生

架构师之路--从业务角度谈缓存的选型

1875
来自专栏猿湿Xoong

怎么用TWRP刷LineageOS拯救我的Android手机?

8114
来自专栏安恒信息

携程曝重大安全漏洞 客户信用卡信息或遭泄露

3月22日,乌云平台连续披露了两个携程网安全漏洞,漏洞发现者称由于携程开启了用户支付服务借口的调试功能,导致携程安全支付日志可被任意还可读取,日志...

2908

扫码关注云+社区

领取腾讯云代金券