Github上有趣的100個(gè)python項(xiàng)目
點(diǎn)擊藍(lán)字關(guān)注我,有干貨領(lǐng)取!

Github上面有很多有趣的python項(xiàng)目,包括軟件、庫(kù)、教程、資源等。這次收集了其中比較受歡迎的100個(gè),供大家參考。
資料來(lái)源:https://github.com/521xueweihan/HelloGitHub
?
1、awesome-python-webapp:廖老師的 Python 入門教程中的實(shí)踐項(xiàng)目的代碼
2、Minos:一個(gè)基于 Tornado/MongoDB/Redis 的社區(qū)系統(tǒng)
3、tushare:TuShare 是一個(gè)免費(fèi)、開源的 Python 財(cái)經(jīng)數(shù)據(jù)接口包,TuShare 文檔

4、beijing_bus:北京實(shí)時(shí)公交,可以顯示查詢的公交到達(dá)某站還需多久

5、luokr.com:Python Tornado 寫的開源網(wǎng)站——螺殼網(wǎng),訪問(wèn),如圖:

6、ssbc:Python Django 寫的種子搜索網(wǎng)站——手撕包菜,如圖:

7、listen1:Listen 1 讓你用一個(gè)網(wǎng)頁(yè)就能聽到多個(gè)網(wǎng)站的在線音樂(lè),支持各種平臺(tái)。如圖:

8、python-gems:有趣的 Pyhton 代碼片段集合
9、algorithm:老齊的 Python 算法教程
10、python-goose:Goose 用于文章提取器,提取中文內(nèi)容的示例代碼:
>>>?from?goose?import?Goose
>>>?from?goose.text?import?StopWordsChinese
>>>?url??=?'http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml'
>>>?g?=?Goose({'stopwords_class':?StopWordsChinese})
>>>?article?=?g.extract(url=url)
>>>?print?article.cleaned_text[:150]
香港行政長(zhǎng)官梁振英在各方壓力下就其大宅的違章建筑(僭建)問(wèn)題到立法會(huì)接受質(zhì)詢,并向香港民眾道歉。
梁振英在星期二(12月10日)的答問(wèn)大會(huì)開始之際在其演說(shuō)中道歉,但強(qiáng)調(diào)他在違章建筑問(wèn)題上沒(méi)有隱瞞的意圖和動(dòng)機(jī)。
一些親北京陣營(yíng)議員歡迎梁振英道歉,且認(rèn)為應(yīng)能獲得香港民眾接受,但這些議員也質(zhì)問(wèn)梁振英有
11、mincss:Python 寫的用來(lái)找到 CSS 中沒(méi)有用到的代碼片段,并刪除。適用于:想要做一個(gè)頁(yè)面,但是不會(huì)寫 CSS 人。示例代碼如下:
#coding:utf-8
#!/usr/bin/env?python
from?__future__?import?print_function
import?sys,?os
sys.path.insert(0,?os.path.abspath('.'))
from?mincss.processor?import?Processor
#?這里改成想要參考的頁(yè)面
URL?=?'http://localhost:9000/page.html'
def?run():
????p?=?Processor()
????p.process(URL)
????#?輸出INlink的css的簡(jiǎn)化前和簡(jiǎn)化后的css代碼
????print("INLINES?".ljust(79,?'-'))
????for?each?in?p.inlines:
????????print("On?line?%s"?%?each.line)
????????print('-?'?*?40)
????????print("BEFORE")
????????print(each.before)
????????print('-?'?*?40)
????????print("AFTER:")
????????print(each.after)
????#?輸出link引用的css的簡(jiǎn)化前和簡(jiǎn)化后的css代碼
????print("LINKS?".ljust(79,?'-'))
????for?each?in?p.links:
????????print("On?href?%s"?%?each.href)
????????print('-?'?*?40)
????????print("BEFORE")
????????print(each.before)
????????print('-?'?*?40)
????????print("AFTER:")
????????print(each.after)
if?__name__?==?'__main__':
????run()
12、KindleEar:這是一個(gè)運(yùn)行在 Google App Engine(GAE) 上的 Kindle 個(gè)人推送服務(wù)應(yīng)用,生成排版精美的雜志模式mobi/epub格式自動(dòng)每天推送至您的 Kindle 或其他郵箱。
13、python-guide:Requests 庫(kù)的作者——kennethreitz,寫的 Python 入門教程。不單單是語(yǔ)法層面的,涵蓋項(xiàng)目結(jié)構(gòu)、代碼風(fēng)格,進(jìn)階、工具等方方面面。雖然是英文版(中文翻譯版),但我這個(gè)英語(yǔ)渣都能看懂,你肯定也可以,快去看看吧,開卷有益。在線閱讀
14、flask-admin:我工作中需要寫一個(gè)微型的管理系統(tǒng),用的就是這個(gè)框架。簡(jiǎn)直快餐型,頁(yè)面都寫好了,只要設(shè)置好相關(guān)配置就可以跑起來(lái)了。唯一缺點(diǎn)就是文檔中的例子少,開發(fā)一些特定的需求需要自己看源碼,才能知道如何改。文檔,下面是我跑起來(lái)之后的樣子:

15、python-sdk:七牛云存儲(chǔ) SDK。我自己在用他家的服務(wù),上手簡(jiǎn)單、有免費(fèi)額度,可以用來(lái)做‘圖床’,同時(shí),有了這個(gè) SDK 可以寫一些好用的小工具。注意:圖床不能隨便用,我曾經(jīng)就用超了,賬戶的錢能扣成負(fù)數(shù)!
16、superset:企業(yè)級(jí)的數(shù)據(jù)探索、展示平臺(tái)。功能很強(qiáng)大,可以用來(lái)做數(shù)據(jù)分析、展示。如下圖:

17、flaskbb:基于 Flask 框架做的論壇,功能有限,輕量級(jí)的論壇應(yīng)用在線文檔,可以在這個(gè)項(xiàng)目上進(jìn)行二次開發(fā),實(shí)現(xiàn)更加復(fù)雜的功能。在線預(yù)覽

18、fuck-login:模擬登錄一些知名的網(wǎng)站,為了方便爬取需要登錄的網(wǎng)站。注意:控制爬蟲的爬取頻率!
19、Young:基于 Tornado 框架、MongoDB 數(shù)據(jù)庫(kù),寫的功能豐富的社區(qū)項(xiàng)目。詳細(xì)的安裝步驟,適合學(xué)習(xí)如何創(chuàng)建社區(qū)類 Web App。在線預(yù)覽,項(xiàng)目運(yùn)行效果圖:

20、textfilter:基于某 1w 詞敏感詞庫(kù),用 Python 實(shí)現(xiàn)幾種不同的過(guò)濾方式。用于過(guò)濾敏感詞的實(shí)用模塊,示例代碼:
from?filter?import?DFAFilter
gfw?=?DFAFilter()
gfw.parse("keywords")
print?"待過(guò)濾:售假人民幣?我操操操"
print?"過(guò)濾后:",?gfw.filter("售假人民幣?我操操操",?"*")
test_first_character()
#?運(yùn)行結(jié)果
#?待過(guò)濾:售假人民幣?我操操操
#?過(guò)濾后:?售假幣?
21、qrcode:Python 寫的生成動(dòng)態(tài)、彩色、各式各樣的二維碼,詳細(xì)的中文文檔,通過(guò)?qrcode?生成的二維碼樣式如下:

22、httpie:非常好用的命令行 HTTP 客戶端,cURL 的替代者,返回的結(jié)果支持高亮,提高了可讀性。用于調(diào)試接口、查看服務(wù)器返回的 HTTP 協(xié)議的信息。在線文檔,下面的是 cURL 和 httpie 的返回結(jié)果對(duì)比圖:

23、langid:用于識(shí)別輸入文本數(shù)據(jù)所屬的語(yǔ)種,目前支持 97 種語(yǔ)言識(shí)別。示例代碼:
import?langid
text1?=?"I?am?a?coder?and?love?data?mining"
text2?=?"請(qǐng)注明作者和出處并保留聲明和聯(lián)系方式"
print?langid.classify(text1)
print?langid.classify(text2)
#?('en',?0.9999957874458753)
#?('zh',?1.0)
24、fake-useragent:偽裝瀏覽器身份,常用于爬蟲。這個(gè)項(xiàng)目的代碼很少,可以閱讀一下,看看?ua.random?是如何返回隨機(jī)的瀏覽器身份的 ,示例代碼:
from?fake_useragent?import?UserAgent
ua?=?UserAgent()
ua.ie
#?Mozilla/5.0?(Windows;?U;?MSIE?9.0;?Windows?NT?9.0;?en-US);
ua.msie
#?Mozilla/5.0?(compatible;?MSIE?10.0;?Macintosh;?Intel?Mac?OS?X?10_7_3;?Trident/6.0)'
ua['Internet?Explorer']
#?Mozilla/5.0?(compatible;?MSIE?8.0;?Windows?NT?6.1;?Trident/4.0;?GTB7.4;?InfoPath.2;?SV1;?.NET?CLR?3.3.69573;?WOW64;?en-US)
ua.opera
#?Opera/9.80?(X11;?Linux?i686;?U;?ru)?Presto/2.8.131?Version/11.11
ua.chrome
#?Mozilla/5.0?(Windows?NT?6.1)?AppleWebKit/537.2?(KHTML,?like?Gecko)?Chrome/22.0.1216.0?Safari/537.2'
ua.google
#?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_7_4)?AppleWebKit/537.13?(KHTML,?like?Gecko)?Chrome/24.0.1290.1?Safari/537.13
ua['google?chrome']
#?Mozilla/5.0?(X11;?CrOS?i686?2268.111.0)?AppleWebKit/536.11?(KHTML,?like?Gecko)?Chrome/20.0.1132.57?Safari/536.11
ua.firefox
#?Mozilla/5.0?(Windows?NT?6.2;?Win64;?x64;?rv:16.0.1)?Gecko/20121011?Firefox/16.0.1
ua.ff
#?Mozilla/5.0?(X11;?Ubuntu;?Linux?i686;?rv:15.0)?Gecko/20100101?Firefox/15.0.1
ua.safari
#?Mozilla/5.0?(iPad;?CPU?OS?6_0?like?Mac?OS?X)?AppleWebKit/536.26?(KHTML,?like?Gecko)?Version/6.0?Mobile/10A5355d?Safari/8536.25
#?and?the?best?one,?random?via?real?world?browser?usage?statistic
ua.random
25、reddit:reddit.com?網(wǎng)站的源碼,通過(guò)這個(gè)項(xiàng)目,可以學(xué)習(xí) Python 在構(gòu)建大型項(xiàng)目中的使用、項(xiàng)目結(jié)構(gòu)、代碼風(fēng)格、Python 技巧的使用方法等。安裝教程

26、httpstat:httpstat 美化了?curl?的結(jié)果,使得結(jié)果更加可讀。同時(shí)它無(wú)依賴、兼容 Python3、一共才 300 多行。還可以顯示 HTTP 請(qǐng)求的每個(gè)過(guò)程中消耗的時(shí)間,如下圖:

27、PyMySQL:純 Pyton 寫的 MySQL 庫(kù),純 Python 的好處就是可以運(yùn)行在任何裝有 Python 解釋器(CPython、PyPy、IronPython)的平臺(tái)上。相對(duì)于?MySQLdb?性能幾乎一樣,使用方法也一樣,但是?PyMySQL 安裝方法極其簡(jiǎn)單——pip install PyMySQL,PyMySQL 使用示例代碼:
#?下面為例子需要的數(shù)據(jù)庫(kù)的建表語(yǔ)句
CREATE?TABLE?`users`?(
????`id`?int(11)?NOT?NULL?AUTO_INCREMENT,
????`email`?varchar(255)?COLLATE?utf8_bin?NOT?NULL,
????`password`?varchar(255)?COLLATE?utf8_bin?NOT?NULL,
????PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8?COLLATE=utf8_bin
AUTO_INCREMENT=1?;
#?-*-?coding:?utf-8?-*-
import?pymysql.cursors
#?連接數(shù)據(jù)庫(kù)
connection?=?pymysql.connect(host='localhost',
?????????????????????????????user='user',
?????????????????????????????password='passwd',
?????????????????????????????db='db',
?????????????????????????????charset='utf8mb4',
?????????????????????????????cursorclass=pymysql.cursors.DictCursor)
try:
????with?connection.cursor()?as?cursor:
????????#?創(chuàng)建一個(gè)新的紀(jì)錄(record)
????????sql?=?"INSERT?INTO?`users`?(`email`,?`password`)?VALUES?(%s,?%s)"
????????cursor.execute(sql,?('[email protected]',?'very-secret'))
????#?連接不會(huì)自動(dòng)提交,所以你想下面要調(diào)用?commit?方法,存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)的改動(dòng)
????connection.commit()
????with?connection.cursor()?as?cursor:
????????sql?=?"SELECT?`id`,?`password`?FROM?`users`?WHERE?`email`=%s"
????????cursor.execute(sql,?('[email protected]',))
????????#?獲取一條的紀(jì)錄(record)
????????result?=?cursor.fetchone()
????????print(result)??#?結(jié)果輸出:{'password':?'very-secret', 'id': 1}
finally:
????connection.close()??#?操作完數(shù)據(jù)庫(kù)一要記得調(diào)用?close?方法,關(guān)閉連接
28、flask-limiter:一個(gè) Flask 的擴(kuò)展庫(kù),它可以根據(jù)訪問(wèn)者的 IP 限制其訪問(wèn)頻率、次數(shù)等。示例代碼如下:
from?flask?import?Flask
from?flask_limiter?import?Limiter
from?flask_limiter.util?import?get_remote_address
app?=?Flask(__name__)
limiter?=?Limiter(
????app,
????key_func=get_remote_address,
????global_limits=["2?per?minute",?"1?per?second"],
)
@app.route("/slow")
@limiter.limit("1?per?day")
def?slow():
????return?"24"
@app.route("/fast")
def?fast():
????return?"42"
@app.route("/ping")
@limiter.exempt
def?ping():
????return?'PONG'
app.run()
29、ngrok:一個(gè)十分方便、好用的內(nèi)網(wǎng)穿透工具,它可以把本地某個(gè)端口的服務(wù),通過(guò)一個(gè)安全隧道,映射到公網(wǎng)的一個(gè)地址。同時(shí)它提供了一個(gè) Web 頁(yè)面,展示了每個(gè)請(qǐng)求、響應(yīng)的所有信息,便于調(diào)試本地的程序?;镜氖褂梅椒ㄈ缦拢?/p>
ngrok?協(xié)議?本地服務(wù)監(jiān)聽的端口
ngrok?http?8000
創(chuàng)建成功會(huì)返回公網(wǎng)地址,然后通過(guò)該地址就可以訪問(wèn)到本地的服務(wù)。
本地訪問(wèn)?http://localhost:4040,就可以查看關(guān)于每個(gè)請(qǐng)求、響應(yīng)的相關(guān)數(shù)據(jù)

30、glances:一個(gè)可以讓你一目了然你的系統(tǒng)情況(類 (h)top)的工具,它界面友好,安裝方便:pip install glances

31、saythanks.io:Kennethreitz 寫的一個(gè)簡(jiǎn)單的網(wǎng)站(基于 Flask),用于向開源項(xiàng)目作者發(fā)送感謝郵件的 Web App。該項(xiàng)目結(jié)構(gòu)簡(jiǎn)單,可以用來(lái)學(xué)習(xí)大神是如何快速開發(fā) Web 項(xiàng)目、方法、代碼風(fēng)格、開發(fā)常用庫(kù)。而且該項(xiàng)目的意義也特別好:感謝開源項(xiàng)目的作者,愿開源社區(qū)越來(lái)越好,網(wǎng)站地址

32、locust:模擬用戶行為的負(fù)載測(cè)試工具,包含友好的 Web 頁(yè)面,如下圖:

33、jumpserver:Jumpserver 是一款由 Python 編寫開源的跳板機(jī)(是一類可作為跳板批量操作遠(yuǎn)程設(shè)備的網(wǎng)絡(luò)設(shè)備)系統(tǒng),實(shí)現(xiàn)了跳板機(jī)應(yīng)有的功能?;?SSH 協(xié)議來(lái)管理,客戶端無(wú)需安裝 agent。支持常見 Linux 系統(tǒng),效果如下:

34、sh:sh 是一個(gè)成熟,用于替代 subprocess,它允許你調(diào)用任何程序,就像它是一個(gè)函數(shù),支持 Python2.6 - 3.5
from?sh?import?ifconfig
print?ifconfig("eth0")
35、fastText.py:fastText 簡(jiǎn)而言之,就是把文檔中所有詞通過(guò) lookup table 變成向量,取平均后直接用線性分類器得到分類結(jié)果。fastText 的實(shí)現(xiàn)
36、mongoaudit:強(qiáng)大的 MongoDB 滲透測(cè)試工具,用于發(fā)掘 MongoDB 漏洞、并提出改善方法。
安裝: pip install mongoaudit運(yùn)行: python mongoaudit
37、mycli:mycli 是一個(gè)帶語(yǔ)法高亮、自動(dòng)補(bǔ)全的 MySQL 命令行客戶端工具。例如,連接數(shù)據(jù)庫(kù)方法:mycli -h localhost -u 用戶名 數(shù)據(jù)庫(kù)

38、python-fire:Fire 是 Google 開源的 Python 庫(kù),可自動(dòng)將您的代碼轉(zhuǎn)變成 CLI,無(wú)需您做任何額外工作。您不必定義參數(shù),設(shè)置幫助信息,或者編寫定義代碼運(yùn)行方式的 main 函數(shù)。相反,您只需從 main 模塊調(diào)用“Fire”函數(shù),其余工作全部交由 Python Fire 來(lái)完成。示例代碼如下:
import?fire
class?Example(object):
????def?hello(self,?name='world'):
????????"""Says?hello?to?the?specified?name."""
????????return?'Hello?{name}!'.format(name=name)
def?main():
????fire.Fire(Example)
if?__name__?==?'__main__':
????main()
#?在終端中調(diào)用效果如下:
$?./example.py?hello
Hello?world!
$?./example.py?hello?David
Hello?David!
$?./example.py?hello?--name=Google
Hello?Google!
39、ngxtop:解析 nginx 訪問(wèn)日志并格式化輸出有用的信息,可以用來(lái)實(shí)時(shí)了解你的服務(wù)器正在發(fā)生的情況。安裝命令?pip install ngxtop,輸出示例如下:
$?ngxtop
running?for?411?seconds,?64332?records?processed:?156.60?req/sec
Summary:
|???count?|???avg_bytes_sent?|???2xx?|???3xx?|???4xx?|???5xx?|
|---------+------------------+-------+-------+-------+-------|
|???64332?|?????????2775.251?|?61262?|??2994?|????71?|?????5?|
Detailed:
|?request_path?????????????????????????????|???count?|???avg_bytes_sent?|???2xx?|???3xx?|???4xx?|???5xx?|
|------------------------------------------+---------+------------------+-------+-------+-------+-------|
|?/abc/xyz/xxxx????????????????????????????|???20946?|??????????434.693?|?20935?|?????0?|????11?|?????0?|
|?/xxxxx.json??????????????????????????????|????5633?|?????????1483.723?|??5633?|?????0?|?????0?|?????0?|
|?/xxxxx/xxx/xxxxxxx???????????????????????|????3624?|?????????7830.236?|??3621?|?????0?|?????3?|?????0?|
|?/static/js/minified/utils.min.js?????????|????3031?|?????????1781.155?|??2104?|???927?|?????0?|?????0?|
40、algorithms:基本算法、數(shù)據(jù)結(jié)構(gòu)的 Python 實(shí)現(xiàn)
.
├──?array
│???├──?circular_counter.py
│???└──?...
├──?backtrack
│???├──?anagram.py
│???└──?...
├──?bfs
│???├──?shortest_distance_from_all_buildings.py
│???└──?word_ladder.py
├──?bit
│???├──?count_ones.py
│???└──?...
│???└──?traversal.py
└──?等等
41、searx:分分鐘打造一個(gè)聚合的搜索引擎,使用簡(jiǎn)單,部署方便。拓展方便,基于插件式的管理。演示地址
42、grequests:Rquests + Gevent 讓異步 HTTP 變得簡(jiǎn)單、人性化。示例代碼:
>>>?import?grequests
>>>?def?exception_handler(request,?exception):
...????print?"Request?failed"
>>>?reqs?=?[
...????grequests.get('http://httpbin.org/delay/1',?timeout=0.001),
...????grequests.get('http://fakedomain/'),
...????grequests.get('http://httpbin.org/status/500')]
>>>?grequests.map(reqs,?exception_handler=exception_handler)
Request?failed
Request?failed
[None,?None,?]
43、explainshell:一個(gè)可以解析 Linux 命令的網(wǎng)站,它可以給出命令的解釋和其參數(shù)的解釋,例如:ps -aux|grep python,在線演示

44、certbot:免費(fèi)的自動(dòng)啟用和部署 HTTPS 的工具,讓你的網(wǎng)站開啟 HTTPS 變得簡(jiǎn)單快捷。在部署教程頁(yè)面選擇服務(wù)器的操作系統(tǒng)和 Web 服務(wù)器,之后根據(jù)給出的步驟一步步的執(zhí)行命令就行了,部署教程

45、musicbox:基于 Python 編寫的網(wǎng)易云音樂(lè)命令行版本,使用起來(lái)簡(jiǎn)單優(yōu)雅,能夠快速安裝及使用

46、django-blog-tutorial:基于最新版 Django 1.10 和 Python 3.5,通過(guò) 26 篇教程一步步帶你使用 Django 從零開發(fā)一個(gè)個(gè)人博客系統(tǒng),在實(shí)踐的同時(shí)掌握 Django 的開發(fā)技巧,完成效果展示
47、aredis:一款基于 Python3 asyncio 的異步 redis 客戶端,支持對(duì)于單實(shí)例,連接池, 哨兵以及集群。作者希望可以找到志同道合的小伙伴集思廣益,一起維護(hù)、優(yōu)化。示例代碼如下:
>>>?import?asyncio
???>>>?from?aredis?import?StrictRedis
???>>>
???>>>?async?def?example():
???>>>??????client?=?StrictRedis(host='127.0.0.1',?port=6379,?db=0)
???>>>??????await?client.flushdb()
???>>>??????await?client.set('foo',?1)
???>>>??????assert?await?client.exists('foo')?is?True
???>>>??????await?client.incr('foo',?100)
???>>>
???>>>??????assert?int(await?client.get('foo'))?==?101
???>>>??????await?client.expire('foo',?1)
???>>>??????await?asyncio.sleep(0.1)
???>>>??????await?client.ttl('foo')
???>>>??????await?asyncio.sleep(1)
???>>>??????assert?not?await?client.exists('foo')
???>>>
???>>>?loop?=?asyncio.get_event_loop()
???>>>?loop.run_until_complete(example())
48、freezegun:時(shí)間漫步模塊,模擬到某一個(gè)時(shí)間,使用簡(jiǎn)單方式多樣,實(shí)現(xiàn)了裝飾器、上下文等調(diào)用方式。示例代碼如下:
from?freezegun?import?freeze_time
import?datetime
import?unittest
@freeze_time("2012-01-14")
def?test():
????assert?datetime.datetime.now()?==?datetime.datetime(2012,?1,?14)
49、LearnPython:這一個(gè)以”擼代碼“的形式學(xué)習(xí) Python 的編程技巧的項(xiàng)目,針對(duì) Python 的一些語(yǔ)法特性力求通過(guò)代碼例子解釋該知識(shí)點(diǎn)、同時(shí)還有一些實(shí)踐項(xiàng)目,通過(guò)動(dòng)手實(shí)踐有助于知識(shí)的融會(huì)貫通。同時(shí)可以關(guān)注作者的知乎專欄學(xué)習(xí)更多的 Python 編程技巧
50、getproxy:極簡(jiǎn)的抓取代理項(xiàng)目,無(wú)需配置。不僅提供了獲取代理腳本,同時(shí)可以通過(guò)該頁(yè)面,直接獲取可用代理(15min 更新、類型包含http和https)
51、syncPlaylist:在網(wǎng)易云音樂(lè)與 QQ 音樂(lè)之間同步歌單。易于使用、配置方便、代碼簡(jiǎn)單,用到的技術(shù):requests?+?beautifulsoup?以及?selenium?+?phantomjs
52、GetSubtitles:通過(guò)拖曳視頻文件進(jìn)終端,一步下載字幕?到視頻對(duì)應(yīng)文件夾,并重命名字幕名稱為視頻名稱。Ubuntu 16.04、Windows 10上測(cè)試通過(guò),同時(shí)兼容 Python2、3。Python 的魅力之一就是可以快速實(shí)現(xiàn)一個(gè)適合自己的小工具 Cool ??

53、huey:結(jié)合 redis 實(shí)現(xiàn)的輕量任務(wù)隊(duì)列,但是支持功能還是很多的:
多進(jìn)程、多線程、協(xié)程 任務(wù)定時(shí)執(zhí)行 任務(wù)執(zhí)行失敗重試 結(jié)果存儲(chǔ)
54、simiki:一個(gè)簡(jiǎn)單的個(gè)人 Wiki 框架,便于快速搭建 Wiki 頁(yè)。使用 Markdown 書寫 Wiki, 生成靜態(tài) HTML 頁(yè)面。Wiki 源文件按目錄分類存放, 方便管理維護(hù)。中文文檔
55、pyecharts:Echarts+Python 實(shí)現(xiàn)的一個(gè)用于生成 Echarts 圖表的類庫(kù)

56、proxy_pool:基于 Python 的自建代理 IP 池服務(wù),通過(guò)網(wǎng)絡(luò)爬蟲抓取互聯(lián)網(wǎng)上免費(fèi)的代理 IP,本地校驗(yàn)、剔除失效的代理IP,從而實(shí)現(xiàn)高可用的代理 IP 池。最后使用 Flask 搭建提供代理 IP 服務(wù),包括代理池刷新、無(wú)效代理刪除、代理獲取等。該項(xiàng)目設(shè)計(jì)文檔詳細(xì)、模塊結(jié)構(gòu)簡(jiǎn)明易懂,同時(shí)適合爬蟲新手更好的學(xué)習(xí)爬蟲技術(shù)

57、WeiboSpider:分布式微博爬蟲,支持快速抓取和穩(wěn)定抓取兩種運(yùn)行模式。項(xiàng)目模塊邏輯清晰、注釋豐富、便于定制化自己的需求。同時(shí),對(duì)于小白用戶,可以通過(guò)演示視頻快速入門,也提供QQ群答疑,已經(jīng)持續(xù)維護(hù)一年多??孔V的項(xiàng)目,小伙伴們要趕快上車~

58、pygorithm:一個(gè)幫助學(xué)習(xí)主要算法的庫(kù),可以通過(guò)理解這些算法的實(shí)現(xiàn),提高自己的算法水平。冒泡排序示例:
>>>?from?pygorithm.sorting?import?bubble_sort
>>>?my_list?=?[12,?4,?3,?5,?13,?1,?17,?19,?15]
>>>?sorted_list?=?bubble_sort.sort(my_list)
>>>?print(sorted_list)
>>>?[1,?3,?4,?5,?12,?13,?15,?17,?19]
59、newspaper:強(qiáng)大的提取 Web 的內(nèi)容、文章的庫(kù),支持多種語(yǔ)言,安裝命令?pip3 install newspaper3k。示例代碼:
>>>?from?newspaper?import?Article
>>>?url?=?'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
>>>?article?=?Article(url)
>>>?article.download()
>>>?article.html
'
>>>?article.parse()
>>>?article.authors
['Leigh?Ann?Caldwell',?'John?Honway']
>>>?article.publish_date
datetime.datetime(2013,?12,?30,?0,?0)
>>>?article.text
'Washington?(CNN)?--?Not?everyone?subscribes?to?a?New?Year's?resolution...'
>>>?article.top_image
'http://someCDN.com/blah/blah/blah/file.png'
>>>?article.movies
['http://youtube.com/path/to/link.com',?...]
>>>?from?newspaper?import?Article
>>>?url?=?'http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml'
>>>?a?=?Article(url,?language='zh')?#?Chinese
>>>?a.download()
>>>?a.parse()
>>>?print(a.text[:150])
香港行政長(zhǎng)官梁振英在各方壓力下就其大宅的違章建
筑(僭建)問(wèn)題到立法會(huì)接受質(zhì)詢,并向香港民眾道歉。
梁振英在星期二(12月10日)的答問(wèn)大會(huì)開始之際
在其演說(shuō)中道歉,但強(qiáng)調(diào)他在違章建筑問(wèn)題上沒(méi)有隱瞞的
意圖和動(dòng)機(jī)。?一些親北京陣營(yíng)議員歡迎梁振英道歉,
且認(rèn)為應(yīng)能獲得香港民眾接受,但這些議員也質(zhì)問(wèn)梁振英有
>>>?print(a.title)
港特首梁振英就住宅違建事件道歉
60、faker:用于生成假數(shù)據(jù)的庫(kù),支持多種語(yǔ)言,你值得擁有。示例代碼:
fake.address()
#?'遼寧省雪市靜安廉街b座?998259'
fake.street_address()
#?'巢湖街U座'
fake.building_number()
#?'x座'
fake.city_suffix()
#?'市'
fake.latitude()
#?Decimal('-0.295126')
fake.province()
#?'湖北省'
61、binlog2sql:從 MySQL binlog 解析出你要的 SQL。根據(jù)不同選項(xiàng),提供如下功能
數(shù)據(jù)快速回滾,閃回原理與實(shí)踐 主從切換后新 master 丟數(shù)據(jù)的修復(fù) 從 binlog 生成標(biāo)準(zhǔn)SQL,帶來(lái)的衍生功能
62、pandas-tutorial:這套 pandas 教程包含從初級(jí)到進(jìn)階的內(nèi)容,適合初學(xué)者和希望進(jìn)階建立知識(shí)體系的數(shù)據(jù)科學(xué)從業(yè)者閱讀。作者還在持續(xù)更新高級(jí)內(nèi)容,你值得擁有
63、pysheeet:Python 速查表,在線閱讀
64、robobrowser:提供多種模擬操作網(wǎng)頁(yè)的庫(kù),比如獲得網(wǎng)頁(yè)內(nèi)容、訪問(wèn)鏈接、點(diǎn)擊按鈕、填充并提交表單、上傳文件。使用簡(jiǎn)單、API 友好。適用于想要通過(guò)腳本流程化操作,某些未提供這些操作接口的場(chǎng)景,示例代碼如下:
#?上傳文件
from?robobrowser?import?RoboBrowser
#?Browse?to?a?page?with?an?upload?form
browser?=?RoboBrowser()
browser.open('http://cgi-lib.berkeley.edu/ex/fup.html')
#?Find?the?form
upload_form?=?browser.get_form()
upload_form?????????????????????#?
#?Choose?a?file?to?upload
upload_form['upfile']???????????#?
upload_form['upfile'].value?=?open('path/to/file.txt',?'r')
#?Submit
browser.submit(upload_form)
65、ItChat:開源的微信個(gè)人號(hào)SDK,提供了豐富的功能。從而使得 Python 調(diào)用微信、發(fā)送消息、傳輸文件等操作只需要編寫極少的代碼,示例代碼如下:
import?itchat
itchat.auto_login()
itchat.send('Hello,?filehelper',?toUserName='filehelper')
66、records:Kenneth Reitz 大神的for Humans?系列,Records 是一個(gè)支持大多數(shù)主流關(guān)系數(shù)據(jù)庫(kù)的原生 SQL 查詢第三方庫(kù)。API 友好,使用簡(jiǎn)單、支持命令行模式、功能多樣。與此同時(shí)該庫(kù)只有 500 行代碼,可以當(dāng)作入門閱讀源碼的項(xiàng)目,同時(shí)學(xué)習(xí)大神的編程技巧與習(xí)慣,示例代碼如下:
import?records
db?=?records.Database('postgres://...')??#?連接數(shù)據(jù)庫(kù)
rows?=?db.query('select?*?from?active_users')??#?執(zhí)行原生?SQL
#?遍歷結(jié)果
for?r?in?rows:
????print(r.name,?r.user_email)
#?友好的?print?格式
print(rows.dataset)
#?username|active|name??????|user_email???????|timezone
#?--------|------|----------|-----------------|--------------------------
#?model-t?|True??|Henry?Ford|[email protected]|2016-02-06?22:28:23.894202
#?支持將結(jié)果導(dǎo)出成不同格式
print(rows.export('json'))??#?json
print(rows.export('csv'))??#?csv
print(rows.export('yaml'))?#?yaml
rows.export('df')??#?pandas?的?df?對(duì)象
with?open('report.xls',?'wb')?as?f:
????f.write(rows.export('xls'))??#?xls
67、zdict:方便的終端字典工具,支持多種字典和參數(shù)、翻譯結(jié)果高亮、以及交互模式查詢。安裝命令?pip install zdict(僅支持 Python3)。查詢效果如下圖所示:

68、joblib:使用 Python 方便的進(jìn)行并行計(jì)算,示例代碼如下:
from?joblib?import?Parallel,?delayed
from?math?import?sqrt
Parallel(n_jobs=1)(delayed(sqrt)(i2)?for?i?in?range(10))
69、tldr-python-client:Linux man 解釋一般都太長(zhǎng)了,很多時(shí)候我們就想用一些比較常用的命令,但卻記不起來(lái)。這個(gè)時(shí)候如果不 Google,就可以用?tldr(簡(jiǎn)化 man 的工程)。該項(xiàng)目為 Python 客戶端實(shí)現(xiàn)

70、thefuck:在 Linux 命令行中,當(dāng)你輸入的命令有錯(cuò)誤后,直接輸入?fuck?就可以自動(dòng)執(zhí)行修復(fù)后的命令,效果圖如下:

71、youtube-dl:強(qiáng)大的視頻下載工具,支持幾百個(gè)國(guó)內(nèi)外主流視頻網(wǎng)站。正如名字一樣,最初是為了下載 youtube 上的視頻而開發(fā)的。如果有國(guó)外服務(wù)器的朋友,可以充分利用這個(gè)工具,下載 youtube 上的視頻,速度不要太爽。下面介紹安裝、下載視頻等命令:
# 1\. 安裝命令:sudo pip install youtube-dl
Installing?collected?packages:?youtube-dl
Successfully?installed?youtube-dl-2017.12.14
# 2\. 查看 URL 支持格式:youtube-dl --list-formats URL
format?code??extension??resolution?note
134??????????mp4????????450x360????DASH?video??449k?,?avc1.4d4015,?25fps,?video?only
17???????????3gp????????176x144????small?,?mp4v.20.3,?mp4a.40.2@?24k
36???????????3gp????????300x240????small?,?mp4v.20.3,?mp4a.40.2
18???????????mp4????????450x360????medium?,?avc1.42001E,?mp4a.40.2@?96k
43???????????webm???????640x360????medium?,?vp8.0,?vorbis@128k?(best)
# 3\. 選擇格式下載視頻:youtube-dl -f 18 URL (18為mp4 450x360格式)
[youtube:playlist]?Downloading?playlist?PLF90USSyuoYzPhhFG7XFBRn63Zvs--lNP?-?add?--no-playlist?to?just?download?video?JyLducMVYVg
[youtube:playlist]?PLF90USSyuoYzPhhFG7XFBRn63Zvs--lNP:?Downloading?webpage
[download]?Downloading?playlist:?情滿四合院完整版
[youtube:playlist]?playlist?情滿四合院完整版:?Downloading?42?videos
[download]?Downloading?video?1?of?42
...
#?4\.?下載完成后,最后使用?https://github.com/houtianze/bypy?庫(kù)把下載的視頻同步到百度網(wǎng)盤上
72、jieba:強(qiáng)大的 Python 分詞庫(kù),拿來(lái)直接用就好。示例代碼如下:
#?encoding=utf-8
import?jieba
seg_list?=?jieba.cut("我來(lái)到北京清華大學(xué)",?cut_all=True)
print("Full?Mode:?"?+?"/?".join(seg_list))??#?全模式
seg_list?=?jieba.cut("我來(lái)到北京清華大學(xué)",?cut_all=False)
print("Default?Mode:?"?+?"/?".join(seg_list))??#?精確模式
seg_list?=?jieba.cut("他來(lái)到了網(wǎng)易杭研大廈")??#?默認(rèn)是精確模式
print(",?".join(seg_list))
seg_list?=?jieba.cut_for_search("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所,后在日本京都大學(xué)深造")??#?搜索引擎模式
print(",?".join(seg_list))
【全模式】:?我/?來(lái)到/?北京/?清華/?清華大學(xué)/?華大/?大學(xué)
【精確模式】:?我/?來(lái)到/?北京/?清華大學(xué)
【新詞識(shí)別】:他, 來(lái)到, 了, 網(wǎng)易, 杭研, 大廈????(此處,“杭研”并沒(méi)有在詞典中,但是也被Viterbi算法識(shí)別出來(lái)了)
【搜索引擎模式】:?小明, 碩士, 畢業(yè), 于, 中國(guó), 科學(xué), 學(xué)院, 科學(xué)院, 中國(guó)科學(xué)院, 計(jì)算, 計(jì)算所, 后, 在, 日本, 京都, 大學(xué), 日本京都大學(xué), 深造
73、pydu:該庫(kù)將平時(shí)常用的數(shù)據(jù)結(jié)構(gòu)和工具都收錄其中,可供日常開發(fā)的使用,同時(shí)方便學(xué)習(xí)與借鑒,豐富的文檔能幫助新手更好的理解和使用它。這些實(shí)用的模塊都是來(lái)自于開源項(xiàng)目和貢獻(xiàn)者們的智慧,快來(lái)加入到這個(gè)項(xiàng)目中,讓它變得更加實(shí)用和豐富
74、shell-functools:把函數(shù)式的編程帶入 shell,從而讓很多事情變得簡(jiǎn)單。通過(guò) Python 的高階函數(shù)和內(nèi)置模塊 os.path 與命令的管道結(jié)合,達(dá)到了強(qiáng)大、高效的功效。相比于單純的命令實(shí)現(xiàn)更加的直觀和容易理解,示例代碼如下:
示例?1
#?ls?查看當(dāng)前目錄下的文件
>?ls?
document.txt
folder
image.jpg
#?通過(guò)?map?abspath?展示這些文件的絕對(duì)路徑
>?ls?|?map?abspath
/tmp/demo/document.txt
/tmp/demo/folder
/tmp/demo/image.jpg
示例?2
#?find?命令找到的文件和目錄
>?find
.
./folder
./folder/me.jpg
./folder/subdirectory
./folder/subdirectory/song.mp3
./document.txt
./image.jpg
#?把找到的結(jié)果中的文件,重命名在末尾追加?.bak?(備份文件)
>?find?|?filter?is_file?|?map?basename?|?map?append?".bak"
me.jpg.bak
song.mp3.bak
document.txt.bak
image.jpg.bak
75、tqdm:強(qiáng)大、快速、易擴(kuò)展的 Python 進(jìn)度條庫(kù)。我想通過(guò)下面的示例代碼和效果展示圖,你會(huì)跑去給這個(gè)項(xiàng)目來(lái)個(gè) Star 的
from?tqdm?import?tqdm
for?i?in?tqdm(range(10000)):
????pass
#?輸出結(jié)果:
#?76%|████████████████████████████?????????|?7568/10000?[00:33<00:10,?229.00it/s]

76、HAipproxy:使用 Scrapy+Redis 實(shí)現(xiàn)的高可用分布式 IP 代理池,為大型分布式爬蟲提供高可用低延遲的代理 IP 資源。
from?client.py_cli?import?ProxyFetcher
args?=?dict(host='127.0.0.1',?port=6379,?password='123456',?db=0)
#?這里`zhihu`的意思是,去和`zhihu`相關(guān)的代理ip校驗(yàn)隊(duì)列中獲取ip
#?這么做的原因是同一個(gè)代理IP對(duì)不同網(wǎng)站代理效果不同
fetcher?=?ProxyFetcher('zhihu',?strategy='greedy',?redis_args=args)
#?獲取一個(gè)可用代理
print(fetcher.get_proxy())
#?獲取可用代理列表
print(fetcher.get_proxies())?#?or?print(fetcher.pool)
以知乎為目標(biāo)抓取網(wǎng)站,該代理IP池的實(shí)際性能測(cè)試結(jié)果如下:

77、MovieHeavens:基于 Pyqt4 的電影天堂電影搜索工具,再也不用忍受各種廣告和點(diǎn)擊跳轉(zhuǎn)了

78、WechatSogou:基于搜狗微信搜索的微信公眾號(hào)爬蟲庫(kù),極易上手。示例代碼:
import?wechatsogou
ws_api?=?wechatsogou.WechatSogouAPI()
ws_api.get_gzh_info('微信名稱')
79、Synonyms:中文近義詞工具包。支持自然語(yǔ)言理解的很多任務(wù):文本對(duì)齊、推薦算法、相似度計(jì)算、語(yǔ)義偏移、關(guān)鍵字提取、概念提取、自動(dòng)摘要、搜索引擎等。示例代碼如下:
import?synonyms
synonyms.seg("能量")

80、pook:模擬 HTTP 請(qǐng)求結(jié)果的庫(kù),可用于單元測(cè)試等場(chǎng)景。采用裝飾器方式調(diào)用的示例代碼如下:
import?pook
import?requests
@pook.get('http://httpbin.org/status/500',?reply=204)
@pook.get('http://httpbin.org/status/400',?reply=200)
def?fetch(url):
????return?requests.get(url)
res?=?fetch('http://httpbin.org/status/400')
print('#1?status:',?res.status_code)
res?=?fetch('http://httpbin.org/status/500')
print('#2?status:',?res.status_code)
81、incubator-airflow:定時(shí)任務(wù)管理平臺(tái),管理和調(diào)度各種離線定時(shí)任務(wù),自帶 Web 管理界面。當(dāng)定時(shí)任務(wù)量達(dá)到百級(jí)別的時(shí)候,就無(wú)法再使用 crontab 有效、方便地管理這些任務(wù)了。該項(xiàng)目就是為了解決了這個(gè)問(wèn)題而誕生的

82、wtfpython:有趣、令人驚訝(坑爹)、鮮為人知的 Python 代碼片段集合。中文

83、redis-faina:Redis 性能分析器。提供兩種模式分析模式:命令實(shí)時(shí)、讀取日志。其原理是使用 Redis MONITOR 命令,將該命令的結(jié)果通過(guò)管道傳遞給 redis-faina 腳本,腳本將返回的信息解析,并匯成總成統(tǒng)計(jì)信息。具體信息如下所示:
注意:分析非常閑的 redis 實(shí)例時(shí),分析的結(jié)果可能偏差的很多。
時(shí)間單位為微秒:ms = 1.0?× 10^-6 seconds
Overall?Stats
========================================
#?總命令數(shù)
Lines?Processed???10
#?QPS
Commands/Sec??????1.03???????
#?出現(xiàn)最多的?key?的前綴
Top?Prefixes???????????????????????????
========================================
startchart???9?(90.00%)
#?請(qǐng)求最多的key
Top?Keys????????????????????????????????
========================================
startchart:521xueweihan/hellogithub???9?(90.00%)
#?請(qǐng)求最多的命令
Top?Commands????????????????????????
========================================
get???9?(90.00%)
#?請(qǐng)求響應(yīng)時(shí)間的分布
Command?Time?(microsecs)???????
========================================
Median???583914.0
75%??????637395.0
90%??????5703923.0
99%??????5703923.0
#?總耗時(shí)最多的命令
Heaviest?Commands?(microsecs)
========================================
get???9746157.0
#?慢請(qǐng)求列表
Slowest?Calls?????????????????????????????
========================================
5703923.0???"get"?"startchart:521xueweihan/hellogithub"
637395.0????"get"?"startchart:521xueweihan/hellogithub"
633909.0????"get"?"startchart:521xueweihan/hellogithub"
583914.0????"get"?"startchart:521xueweihan/hellogithub"
569207.0????"get"?"startchart:521xueweihan/hellogithub"
548745.0????"get"?"startchart:521xueweihan/hellogithub"
545493.0????"get"?"startchart:521xueweihan/hellogithub"
523571.0????"get"?"startchart:521xueweihan/hellogithub"
84、marshmallow:使用類似于 ORM 的語(yǔ)法,序列化、反序列化 Python 對(duì)象??梢詫⑿蛄谢膶?duì)象呈現(xiàn)為標(biāo)準(zhǔn)格式,適用于例如數(shù)據(jù)校驗(yàn)、返回 HTTP API 的 JSON。示例代碼如下:
from?datetime?import?date
from?marshmallow?import?Schema,?fields,?pprint
class?ArtistSchema(Schema):
????name?=?fields.Str()
class?AlbumSchema(Schema):
????title?=?fields.Str()
????release_date?=?fields.Date()
????artist?=?fields.Nested(ArtistSchema())
bowie?=?dict(name='David?Bowie')
album?=?dict(artist=bowie,?title='Hunky?Dory',?release_date=date(1971,?12,?17))
schema?=?AlbumSchema()
result?=?schema.dump(album)
pprint(result,?indent=2)
#?輸出如下
#?{?'artist':?{'name':?'David?Bowie'},
#???'release_date':?'1971-12-17',
#???'title':?'Hunky?Dory'}
85、tenacity:使用該庫(kù)可以優(yōu)雅地實(shí)現(xiàn)各種需求的重試。示例代碼如下:
from?tenacity?import?retry,?stop_after_attempt
#?通過(guò)裝飾器,實(shí)現(xiàn)遇到異常重試3次
@retry(stop=stop_after_attempt(3))?
def?get_data(url):
????response?=?requests.get(url)
????response_json?=?response.json()
86、unimatrix:模擬“黑客帝國(guó)”影片中的終端動(dòng)畫腳本

87、pudb:基于控制臺(tái)的全屏 Python 可視化調(diào)試器。比 pdb 好用太多了,特性:
源碼語(yǔ)法高亮,棧、斷點(diǎn)、變量可見并且一直動(dòng)態(tài)更新。變量展示還有很多可以定制化的功能。 基于鍵盤,簡(jiǎn)單高效。支持 VI 的鼠標(biāo)移動(dòng)。還支持 PDB 的某些命令 支持查找源代碼,可以使用 m 代用 module browser 查看載入的模塊 斷點(diǎn)設(shè)置。鼠標(biāo)移到某行代碼,按 b,然后可以在斷點(diǎn)窗口編輯斷點(diǎn)

88、Scylla:一款高質(zhì)量的免費(fèi)代理 IP 池工具,僅支持 Python 3.6。中文文檔,特性如下:
自動(dòng)化的代理 IP 爬取與驗(yàn)證 易用的 JSON API 簡(jiǎn)單但美觀的 web 用戶界面,基于 TypeScript 和 React(例如,代理的地理分布) 最少僅用一行代碼即可與 Scrapy 和 requests 進(jìn)行集成 等等

89、hue:開源的 Apache Hadoop UI 系統(tǒng)。通過(guò)使用 Hue 我們可以在瀏覽器端的 Web 控制臺(tái)上與 Hadoop 集群進(jìn)行交互來(lái)分析處理數(shù)據(jù)。核心功能:
數(shù)據(jù)可視化 SQL 編輯器,支持 Hive、Impala、MySQL等 可進(jìn)行 workflow 的編輯、查看

90、FeelUOwn:一個(gè)符合 Unix 哲學(xué)的跨平臺(tái)的音樂(lè)播放器,主要面向 Linux/macOS 用戶。特性:
安裝簡(jiǎn)單,新手友好 默認(rèn)提供國(guó)內(nèi)各音樂(lè)平臺(tái)插件(網(wǎng)易云、蝦米、QQ) 較強(qiáng)的可擴(kuò)展性可以滿足大家折騰的欲望 核心模塊有較好文檔和測(cè)試覆蓋

91、tinydb:TinyDB 是使用純 Python 編寫的 NoSQL 數(shù)據(jù)庫(kù),使用 json 文件存儲(chǔ)數(shù)據(jù)。它區(qū)別于 SQLite 的關(guān)系性數(shù)據(jù)庫(kù)。同樣的小、不需要依賴外部服務(wù)器。適用于桌面程序、客戶端,不適用于 Web 應(yīng)用、高性能的數(shù)據(jù)查詢。友好的 API,示例代碼:
>>>?from?tinydb?import?TinyDB,?Query
>>>?db?=?TinyDB('path/to/db.json')
>>>?User?=?Query()
>>>?db.insert({'name':?'John',?'age':?22})
>>>?db.search(User.name?==?'John')
[{'name':?'John',?'age':?22}]

92、TGmeetup:搜集、整理、展示、報(bào)名技術(shù)類線下聚會(huì)的命令行工具,讓使用者可以更加方便、及時(shí)的獲取技術(shù)類活動(dòng)資訊
93、termtosvg:Python 寫的終端記錄器。通過(guò)命令?termtosvg?運(yùn)行該工具,然后在終端執(zhí)行你要展示的命令,最終輸入?exit?命令結(jié)束錄制,本地會(huì)生成一份 SVG 動(dòng)畫,可用于分享、展示終端操作。效果如下:

94、cx-extractor-python:這是一個(gè)對(duì)網(wǎng)頁(yè)正文進(jìn)行抽取的工具。?cx-extractor?算法的 python 版本,改進(jìn)了原有算法,使其支持中英文,對(duì)新聞?lì)惥W(wǎng)頁(yè)正文抽取效果較好。示例代碼:
from?crawler.cx_extractor_Python?import??cx_extractor_Python
cx?=?cx_extractor_Python()
test_html?=?cx.getHtml('http://news.163.com/16/0101/10/BC84MRHS00014AED.html')
content?=?cx.filter_tags(test_html)
s?=?cx.getText(content)
print(s)
95、awslogs:一個(gè)簡(jiǎn)單的命令行工具,用于在本地查詢 Amazon CloudWatch 日志,強(qiáng)大的支持多實(shí)例日志匯總查看。簡(jiǎn)單的查看命令:awslogs get /var/logs/syslog ALL -s1d

96、CUP:CUP 基礎(chǔ)庫(kù)是百度開源的 Python 語(yǔ)言基礎(chǔ)庫(kù),致力將 DEV 從涉及底層操作、Util 操作類解放出來(lái),使其更關(guān)注構(gòu)建 service 上層業(yè)務(wù)邏輯。目前已涵蓋了構(gòu)建一個(gè)服務(wù)的各個(gè)方面,大家可以從基礎(chǔ)庫(kù)的代碼結(jié)構(gòu)、wiki、doc 中進(jìn)行簡(jiǎn)單了解。
cup
????|--?cache.py????????????????module??????????????緩存相關(guān)模塊?(?Memory?cache?related?module?)
????|--?decorators.py???????????module??????????????python?修飾符,比如?@Singleton?單例模式?(Decorators?of?python)
????|--?err.py??????????????????module??????????????異常?exception?類,?Exception?classes?for?CUP
????|--?__init__.py?????????????module??????????????默認(rèn)__init__.py,?Default?__init__.py
????|--?log.py??????????????????module??????????????打印日志類,CUP?的打印日志比較簡(jiǎn)潔、規(guī)范,設(shè)置統(tǒng)一、簡(jiǎn)單(cup?logging?module)
????|--?mail.py?????????????????module??????????????發(fā)送郵件?(?CUP?Email?module?(send?emails))
????|--?net?????????????????????package?????????????網(wǎng)絡(luò)相關(guān)操作(?Network?operations,?such?as?net?handler?parameter?tuning?)
????|--?oper.py?????????????????module??????????????一些混雜操作(Mixin?operations)
????|--?platforms.py????????????module??????????????跨平臺(tái)、平臺(tái)相關(guān)操作函數(shù)(Cross-platform?operations)
????|--?res?????????????????????package?????????????資源獲取、實(shí)時(shí)用量統(tǒng)計(jì)等,所有在?/prco?可獲得的系統(tǒng)資源、進(jìn)程、設(shè)備等信息?(?Resource?usage?queries?(in?/proc)、Prcoess?query、etc?)
????|--?shell???????????????????package?????????????命令?Shell?操作?pakcage?(?Shell?Operations、cross-hosts?execution?)
????|--?services????????????????package?????????????構(gòu)建服務(wù)支持的類(比如心跳、線程池?based?執(zhí)行器等等)?Heartbeat、Threadpool?based?executors、file?service、etc
????|-- thirdp ???????????????? package ????????????第三方依賴純 Py 模塊( Third-party modules:pexpect、httplib2 )
????|--?timeplus.py?????????????module??????????????時(shí)間相關(guān)的模塊(Time?related?module)
????|--?unittest.py?????????????module??????????????單元測(cè)試支持模塊(?Unittest、assert、noseClass?)
????|--?util????????????????????package?????????????線程池、可打斷線程、語(yǔ)義豐富的配置文件支持(?ThreadPool、Interruptable-Thread、Rich?configuration、etc?)
????|--?version.py??????????????module??????????????內(nèi)部版本文件,CUP?Version
97、supervisor:Python 開發(fā)的一個(gè) C/S 服務(wù),是 Linux/Unix 系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持 Windows 系統(tǒng)。它可以很方便的監(jiān)聽、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程。用 Supervisor 管理的進(jìn)程,當(dāng)一個(gè)進(jìn)程意外被殺死,supervisort 監(jiān)聽到進(jìn)程死后,會(huì)自動(dòng)將它重新啟動(dòng),很方便的做到進(jìn)程自動(dòng)恢復(fù)的功能,提高系統(tǒng)、服務(wù)的穩(wěn)定性,多用于生產(chǎn)環(huán)境
98、himawaripy:一個(gè) Python3 腳本,它會(huì)定時(shí)(需設(shè)置定時(shí)任務(wù))抓取由日本 Himawari 8 氣象衛(wèi)星拍攝的接近實(shí)時(shí)的地球照片,并將它設(shè)置成你的桌面背景

99、loguru:一個(gè)讓 Python 記錄日志變得簡(jiǎn)單的庫(kù)

100、weixin_crawler:基于 Scrapy、Flask、Echarts、Elasticsearch 等實(shí)現(xiàn)的爬蟲。自帶 UI 界面、分析報(bào)告、搜索功能
python爬蟲人工智能大數(shù)據(jù)公眾號(hào)

