资源整合

  1. 云栖社区>
  2. 博客>
  3. 正文

资源整合

刘新伟 2018-01-07 16:14:00 浏览641
展开阅读全文

一、5 个值得在 2018 年关注的库

Web 领域:Sanic

这个库和 Flask 类似,但是比它快很多,速度能在测试中达到每秒 36000 次请求。在2017年的 Star 增长数几乎是翻了一倍。Gotta go faster!

环境与包管理:Pipenv

这个库相当于是环境管理和包管理二合一,由 Kenneth Reitz (Requests 的作者 )编写,现在移交给 Python 官方来维护,提供比 pip 体验更好的开发包管理。它的 Slogon 是Python Development Workflow for Humans,用来解决各种环境不一致、安装包的问题。

爬虫:Requestium

现在反爬虫技术越来越厉害,常见的请求 + 解析爬虫随着频率变大和前端开发的复杂化变得并不是那么奏效。Requestium 的好处是,结合了 Chrome 59 以后的 headless 无头特性(代替了 phantomjs)。虽然效率稍微低一点,但是稳,前端渲染的网页也可以爬取解析。是 Requests, Selenium 和 Parsel 的结合体。

深度学习:Caffe2

文本处理:FlashText

这个库的开发者在 medium 上发了一篇文章,标题是:Regex was taking 5 days to run. So I built a tool that did it in 15 minutes. (正则要花5天时间才能完成,所以我做了个工具在15分钟内搞定)。这个库可以快速进行大规模语料库的文本搜索与替换。当关键词数量>500 的时候,FlashText 的搜索速度开始超过正则。

作者:麻瓜编程
链接:https://www.zhihu.com/question/24590883/answer/286407918
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、Awesome Python中文版来啦!

引自:Python 资源大全
(本文由 伯乐在线 - 艾凌风 翻译
英文出处:vinta/awesome-python)

三、python 之网络和邮件

1. yagmail

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

import yagmail yag = yagmail.SMTP(user='joy_lmx@163.com', password='nicai?', host='smtp.163.com', port='25') yag.send(user, subject = "I now can send an attachment", attachments=['a.txt', 'b.jpg']) 

2. requests

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_code 200 >>> r.headers['content-type'] 'application/json; charset=utf8' >>> r.encoding 'utf-8' >>> r.text u'{"type":"User"...' >>> r.json() {u'private_gists': 419, u'total_private_repos': 77, ...} 

3. psutil

psutil 是用来获取操作系统监控以及进程管理的,如果你正在写一个监控系统(或脚本),赶紧去试试。这么说吧,我曾经使用psutil把网易内部的一个监控模块,从 \(1000+\) 行重构到了\(100+\) 行。
我这里推荐的几个库,可能 yagmail对最多人有用。而 psutil,对专业的人士最有用。如果你要写一个监控系统,不使用 psutil的话,只能直接去 /proc 目录下读取想用的文件进行计算,或者执行 iostatvmstatdflinux 命令获取命令输出,不管哪一种方法,都要处理很多繁琐的细节。有了 psutil 以后,就轻松多了。贴段代码大家感受一下:

def get_network_info(self):
    """ psutil.net_io_counters() 
    snetio(bytes_sent=12541464, 
    bytes_recv=21459989, 
    packets_sent=80164, 
    packets_recv=88134, 
    errin=0, errout=0, dropin=0, dropout=0) 
    """ 
    return psutil.net_io_counters()

def get_memory_used(self): 
    """ psutil.virtual_memory() 
    svmem(total=4159041536, available=3723980800, 
    percent=10.5, used=1599082496, free=2559959040, 
    active=587403264, inactive=897105920, 
    buffers=95989760, cached=1068032000) 
    """ 
    memory_info = psutil.virtual_memory() 
    memory_used = ( memory_info.total * memory_info.percent / 100 ) / 1024 / 1024 
    return memory_used 

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

4. BeautifulSoup

如果你写爬虫,还在用 XPath 解析 HTML,那赶紧用用 BeautifulSoup,比 XPath 好用一百倍;如果你还在用正则表达式从 HTML 中获取内容,BeautifulSoup 能让你好用到哭。(补充:评论里大家都说 XPath 更好用,难道是我思维方式和大家不一样?)
BeautifulSoup 是用来解析 HTML 的,特点就是好用,有人吐槽 BeautifulSoup 慢?我不在乎 BeautifulSoupXPath 慢多少,我只知道,我的时间比机器的更宝贵。
例如,要找到页面中所有的 links,如下所示:

来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

from bs4 import BeautifulSoup
import requests
 
url = 'https://www.biaodianfu.com'
r = requests.get(url, timeout=20)
soup = BeautifulSoup(r.content, 'html.parser')
print(type(soup))
<class 'bs4.BeautifulSoup'>
for link in soup.find_all('a'):
    print(link.get('href'))
https://www.biaodianfu.com/category/product-design
https://www.biaodianfu.com/category/share-discovery
https://www.biaodianfu.com/category/bigdata
https://www.biaodianfu.com/category/programming
https://www.biaodianfu.com/category/management
https://www.biaodianfu.com/category/architecture
https://www.biaodianfu.com/category/marketing
https://www.biaodianfu.com
http://www.biaodianfu.com/
https://www.biaodianfu.com/about
https://www.biaodianfu.com/archives
.....    

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

更多参考:Python数据解析工具:Beautiful Soup

5. utils

除了开源的库以外,还有些开源项目的 DataStruct.py helper.py utils.py 文件,也值得看一看。里面很多好东西,都是可以直接拿过来用的。

四、怎么样才算是精通 Python?

五、你写论文时发现了哪些神网站?

六、LaTeX笔记|基本功能(一)

完全云端运行:使用谷歌CoLaboratory训练神经网络

八、谷歌发布 TensorFlow 1.5,全面支持动态图机制和 TensorFlow Lite

探寻有趣之事!

网友评论

登录后评论
0/500
评论
刘新伟
+ 关注