前言
PyHubWeekly每周定期更新,精选GitHub上优质的Python项目/小工具。
我把PyHubWeekly托管到了Github,感兴趣的可以搜索Github项目PyHubWeekly[1],如果喜欢,麻烦给个Star支持一下吧。此外,欢迎大家通过提交issue来投稿和推荐自己的项目~
本期为大家推荐GitHub上5个优质的Python项目,它们分别是:
•git-imerge•homu•ProxyPool•PythonDataScienceHandbook•selenium
下面分别来介绍一下上述5个GitHub项目。
git-imerge
Star:2k
git-imerge[2]是一款用于增量合并分支、减少冲突的Python小工具。
在使用git进行版本控制的过程中,最令人痛苦的事情之一就是合并时产生的冲突,在解决冲突的过程中,不仅面临很大的误操作风险,还需要很多让人苦不堪言的手动操作。
当然,在这些冲突中,有一些是无法避免的,但是也有很多事可以避免的,使得冲突最小化。
当使用git-imerge进行增量合并时,它会给出如下提示,
while not done: <fix the conflict that is presented to you> <"git add" the files that you changed> git-imerge continue
解决完冲突之后,使用如下命令完成修改,
git-imerge finish
homu
Star:638
homu[3]是一款与Github继承的机器人小工具,一款增强Github的自动化工具。
以Travis CI为例,如果将pull请求发送到存储库,Travis CI会立即显示测试结果,这样虽然看似很好。但是,在几个其他的pull请求被合并到主分支之后,pull请求在被合并到主分支之后可能会破坏一些东西。
要解决这个问题,应该在合并之前执行测试过程,而不是在接收到pull请求之后。你可以在每次合并pull请求之前手动单击“restart build”按钮。
显然,每次手动执行这个过程是很麻烦的,homu可以自动执行此过程。它监听pull 请求,然后通过集成服务对它进行测试,只有当它通过所有测试时,它才会被合并到master中。
ProxyPool
Star:1.2k
ProxyPool[4]是一款高效的代理池工具。
我们在很多工作场景下会用到代理,例如,一个比较典型的场景:爬虫。通过这些代理,我们可以解决针对不同网站的请求问题,但是,有些代理是收费的,有些是免费的,当需要到用到免费代理时却无从下手。
ProxyPool提供了免费高效的代理池,它具有如下特点,
•定时抓取免费代理网站,简易可扩展。•使用 Redis 对代理进行存储并对代理可用性进行排序。•定时测试和筛选,剔除不可用代理,留下可用代理。•提供代理 API,随机取用测试通过的可用代理。
安装依赖包
使用ProxyPool之前首先需要安装依赖包,
pip3 install -r requirements.txt
运行代理池
ProxyPool提供Tester、Getter、Server三种方法,可以单独运行,也可以全部运行。
全部运行,命令如下,
python3 run.py
单独运行,命令如下,
python3 run.py --processor getter python3 run.py --processor tester python3 run.py --processor server
PythonDataScienceHandbook
Star:22.7k
PythonDataScienceHandbook[5]是一个使用Jupyter Notebook编写的一个数据科学手册。
数据分析、挖掘是Python比较热门的一个应用领域,也是现在在企业中应用和岗位较多的方向。所以,我认为,如果学习Python,数据科学是很多同学都无法绕开的,因此,掌握数据科学的技能是非常有必要的。
在数据科学中,经常用到的第三方库主要有如下几个,
•numpy•pandas•matplotlib•scikit-learn
通过PythonDataScienceHandbook,你不仅可以能够学到数据分析、挖掘、机器学习的理论知识,还可以在这些知识的过程中掌握上述这些常用Python第三方库的使用。
selenium
Star:17.3k
selenium[6]是一款热门、强大的web自动化工具。
我们每天大多数时间都花费在浏览器上,例如,知识和数据的获取。我们需要频繁、重复的访问web浏览器。虽然,我们已经对手动访问习以为常,但是,其中有很多工作是可以用自动化工具替代,可以解放一下双手。
此前,我曾介绍过一款web自动化工具helium,它就是基于selenium开发的一款工具。
但是,这些被封装好的工具难免定制性太强,灵活度不够,我们可以发散思维,基于selenium开发出一款个性化的自动化工具集,来满足个人的需求。此外,selenium还支持如下多种编程语言的API接口,
•C#•JavaScript•Java•Python•Ruby
以Python为例简单的介绍一下selenium的使用。
安装
pip install -U selenium
selenium的运行,需要依赖不同浏览器的驱动,例如,Firefox、Google、Edge,下面以Firefox给出一段示例代码,
from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Firefox() browser.get('http://www.yahoo.com') assert 'Yahoo' in browser.title elem = browser.find_element_by_name('p') # Find the search box elem.send_keys('seleniumhq' + Keys.RETURN) browser.quit()
这样就可以在浏览器中完成一系列的动作。