Github上面有很多有趣的python項(xiàng)目,包括軟件骆撇、庫(kù)瞒御、教程、資源等神郊。這次收集了其中比較受歡迎的100個(gè)肴裙,供大家參考。
關(guān)注公眾號(hào):pydatas涌乳,后臺(tái)回復(fù):項(xiàng)目蜻懦,獲得全部項(xiàng)目鏈接
1、Minos:一個(gè)基于 Tornado/MongoDB/Redis 的社區(qū)系統(tǒng)
2夕晓、awesome-python-webapp:廖老師的 Python 入門(mén)教程中的實(shí)踐項(xiàng)目的代碼
3宛乃、tushare:TuShare 是一個(gè)免費(fèi)、開(kāi)源的 Python 財(cái)經(jīng)數(shù)據(jù)接口包蒸辆,TuShare 文檔
4征炼、beijing_bus:北京實(shí)時(shí)公交,可以顯示查詢的公交到達(dá)某站還需多久
5、luokr.com:Python Tornado 寫(xiě)的開(kāi)源網(wǎng)站——螺殼網(wǎng),訪問(wèn)劝赔,如圖:
6绣溜、ssbc:Python Django 寫(xiě)的種子搜索網(wǎng)站——手撕包菜,如圖:
7尚蝌、listen1:Listen 1 讓你用一個(gè)網(wǎng)頁(yè)就能聽(tīng)到多個(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ì)開(kāi)始之際在其演說(shuō)中道歉肃廓,但強(qiáng)調(diào)他在違章建筑問(wèn)題上沒(méi)有隱瞞的意圖和動(dòng)機(jī)智厌。
一些親北京陣營(yíng)議員歡迎梁振英道歉,且認(rèn)為應(yīng)能獲得香港民眾接受盲赊,但這些議員也質(zhì)問(wèn)梁振英有
11铣鹏、mincss:Python 寫(xiě)的用來(lái)找到 CSS 中沒(méi)有用到的代碼片段,并刪除哀蘑。適用于:想要做一個(gè)頁(yè)面诚卸,但是不會(huì)寫(xiě) 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棠赛,寫(xiě)的 Python 入門(mén)教程。不單單是語(yǔ)法層面的膛腐,涵蓋項(xiàng)目結(jié)構(gòu)睛约、代碼風(fēng)格,進(jìn)階哲身、工具等方方面面辩涝。雖然是英文版(中文翻譯版),但我這個(gè)英語(yǔ)渣都能看懂勘天,你肯定也可以膀值,快去看看吧,開(kāi)卷有益误辑。在線閱讀
14、flask-admin:我工作中需要寫(xiě)一個(gè)微型的管理系統(tǒng)歌逢,用的就是這個(gè)框架巾钉。簡(jiǎn)直快餐型,頁(yè)面都寫(xiě)好了秘案,只要設(shè)置好相關(guān)配置就可以跑起來(lái)了砰苍。唯一缺點(diǎn)就是文檔中的例子少潦匈,開(kāi)發(fā)一些特定的需求需要自己看源碼,才能知道如何改赚导。文檔茬缩,下面是我跑起來(lái)之后的樣子:
15、python-sdk:七牛云存儲(chǔ) SDK吼旧。我自己在用他家的服務(wù)凰锡,上手簡(jiǎn)單、有免費(fèi)額度圈暗,可以用來(lái)做‘圖床’掂为,同時(shí),有了這個(gè) SDK 可以寫(xiě)一些好用的小工具员串。注意:圖床不能隨便用勇哗,我曾經(jīng)就用超了,賬戶的錢(qián)能扣成負(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)行二次開(kāi)發(fā),實(shí)現(xiàn)更加復(fù)雜的功能珍语。在線預(yù)覽
18锤岸、fuck-login:模擬登錄一些知名的網(wǎng)站,為了方便爬取需要登錄的網(wǎng)站板乙。注意:控制爬蟲(chóng)的爬取頻率是偷!
19、Young:基于 Tornado 框架募逞、MongoDB 數(shù)據(jù)庫(kù)蛋铆,寫(xiě)的功能豐富的社區(qū)項(xiàng)目。詳細(xì)的安裝步驟放接,適合學(xué)習(xí)如何創(chuàng)建社區(qū)類(lèi) 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 寫(xiě)的生成動(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:偽裝瀏覽器身份,常用于爬蟲(chóng)怔鳖。這個(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ú)依賴(lài)、兼容 Python3情连、一共才 300 多行闪水。還可以顯示 HTTP 請(qǐng)求的每個(gè)過(guò)程中消耗的時(shí)間,如下圖:
27、PyMySQL:純 Pyton 寫(xiě)的 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, ('webmaster@python.org', '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, ('webmaster@python.org',))
# 獲取一條的紀(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)試本地的程序设江〗踝拢基本的使用方法如下:
ngrok 協(xié)議 本地服務(wù)監(jiān)聽(tīng)的端口
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)情況(類(lèi) (h)top)的工具握玛,它界面友好,安裝方便:pip install glances
31甫菠、saythanks.io:Kennethreitz 寫(xiě)的一個(gè)簡(jiǎn)單的網(wǎng)站(基于 Flask)挠铲,用于向開(kāi)源項(xiàng)目作者發(fā)送感謝郵件的 Web App。該項(xiàng)目結(jié)構(gòu)簡(jiǎn)單寂诱,可以用來(lái)學(xué)習(xí)大神是如何快速開(kāi)發(fā) Web 項(xiàng)目拂苹、方法、代碼風(fēng)格痰洒、開(kāi)發(fā)常用庫(kù)瓢棒。而且該項(xiàng)目的意義也特別好:感謝開(kāi)源項(xiàng)目的作者浴韭,愿開(kāi)源社區(qū)越來(lái)越好,網(wǎng)站地址
32脯宿、locust:模擬用戶行為的負(fù)載測(cè)試工具念颈,包含友好的 Web 頁(yè)面,如下圖:
33连霉、jumpserver:Jumpserver 是一款由 Python 編寫(xiě)開(kāi)源的跳板機(jī)(是一類(lèi)可作為跳板批量操作遠(yuǎn)程設(shè)備的網(wǎng)絡(luò)設(shè)備)系統(tǒng)榴芳,實(shí)現(xiàn)了跳板機(jī)應(yīng)有的功能《搴常基于 SSH 協(xié)議來(lái)管理窟感,客戶端無(wú)需安裝 agent。支持常見(jiàn) 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 變成向量,取平均后直接用線性分類(lèi)器得到分類(lèi)結(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 開(kāi)源的 Python 庫(kù)暮蹂,可自動(dòng)將您的代碼轉(zhuǎn)變成 CLI,無(wú)需您做任何額外工作癌压。您不必定義參數(shù)仰泻,設(shè)置幫助信息,或者編寫(xiě)定義代碼運(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, <Response [500]>]
43缅帘、explainshell:一個(gè)可以解析 Linux 命令的網(wǎng)站,它可以給出命令的解釋和其參數(shù)的解釋?zhuān)纾?code>ps -aux|grep python难衰,在線演示
44钦无、certbot:免費(fèi)的自動(dòng)啟用和部署 HTTPS 的工具,讓你的網(wǎng)站開(kāi)啟 HTTPS 變得簡(jiǎn)單快捷盖袭。在部署教程頁(yè)面選擇服務(wù)器的操作系統(tǒng)和 Web 服務(wù)器失暂,之后根據(jù)給出的步驟一步步的執(zhí)行命令就行了,部署教程
45鳄虱、musicbox:基于 Python 編寫(xiě)的網(wǎng)易云音樂(lè)命令行版本弟塞,使用起來(lái)簡(jiǎn)單優(yōu)雅,能夠快速安裝及使用
46拙已、django-blog-tutorial:基于最新版 Django 1.10 和 Python 3.5决记,通過(guò) 26 篇教程一步步帶你使用 Django 從零開(kāi)發(fā)一個(gè)個(gè)人博客系統(tǒng),在實(shí)踐的同時(shí)掌握 Django 的開(kāi)發(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)注作者的知乎專(zhuān)欄學(xué)習(xí)更多的 Python 編程技巧
50韵丑、getproxy:極簡(jiǎn)的抓取代理項(xiàng)目,無(wú)需配置虚缎。不僅提供了獲取代理腳本撵彻,同時(shí)可以通過(guò)該頁(yè)面,直接獲取可用代理(15min 更新实牡、類(lèi)型包含http和https)
51陌僵、syncPlaylist:在網(wǎng)易云音樂(lè)與 QQ 音樂(lè)之間同步歌單。易于使用创坞、配置方便碗短、代碼簡(jiǎn)單,用到的技術(shù):requests
+ beautifulsoup
以及 selenium
+ phantomjs
52摆霉、GetSubtitles:通過(guò)拖曳視頻文件進(jìn)終端豪椿,一步下載字幕 到視頻對(duì)應(yīng)文件夾,并重命名字幕名稱(chēng)為視頻名稱(chē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 書(shū)寫(xiě) Wiki, 生成靜態(tài) HTML 頁(yè)面溶推。Wiki 源文件按目錄分類(lèi)存放, 方便管理維護(hù)徊件。中文文檔
55奸攻、pyecharts:Echarts+Python 實(shí)現(xiàn)的一個(gè)用于生成 Echarts 圖表的類(lèi)庫(kù)
56、proxy_pool:基于 Python 的自建代理 IP 池服務(wù)虱痕,通過(guò)網(wǎng)絡(luò)爬蟲(chóng)抓取互聯(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í)適合爬蟲(chóng)新手更好的學(xué)習(xí)爬蟲(chóng)技術(shù)
57及穗、WeiboSpider:分布式微博爬蟲(chóng),支持快速抓取和穩(wěn)定抓取兩種運(yùn)行模式藏否。項(xiàng)目模塊邏輯清晰蛔翅、注釋豐富敲茄、便于定制化自己的需求。同時(shí)山析,對(duì)于小白用戶堰燎,可以通過(guò)演示視頻快速入門(mén),也提供QQ群答疑笋轨,已經(jīng)持續(xù)維護(hù)一年多秆剪。靠譜的項(xiàng)目爵政,小伙伴們要趕快上車(chē)~
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
'<!DOCTYPE HTML><html itemscope itemtype="http://...'
>>> 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ì)開(kāi)始之際
在其演說(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)容台汇,你值得擁有
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 # <RoboForm upfile=, note=>
# Choose a file to upload
upload_form['upfile'] # <robobrowser.forms.fields.FileInput...>
upload_form['upfile'].value = open('path/to/file.txt', 'r')
# Submit
browser.submit(upload_form)
65、ItChat:開(kāi)源的微信個(gè)人號(hào)SDK劣坊,提供了豐富的功能嘀倒。從而使得 Python 調(diào)用微信、發(fā)送消息局冰、傳輸文件等操作只需要編寫(xiě)極少的代碼测蘑,示例代碼如下:
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)作入門(mén)閱讀源碼的項(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|model-t@gmail.com|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)(i**2) 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)
<u style="text-decoration: none; border-bottom: 1px dashed grey; color: rgb(26, 26, 26); font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"></u>
70树埠、thefuck:在 Linux 命令行中,當(dāng)你輸入的命令有錯(cuò)誤后嘶伟,直接輸入 fuck
就可以自動(dòng)執(zhí)行修復(fù)后的命令,效果圖如下:
71又碌、youtube-dl:強(qiáng)大的視頻下載工具九昧,支持幾百個(gè)國(guó)內(nèi)外主流視頻網(wǎng)站。正如名字一樣毕匀,最初是為了下載 youtube 上的視頻而開(kāi)發(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)盤(pán)上
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)和工具都收錄其中,可供日常開(kāi)發(fā)的使用究恤,同時(shí)方便學(xué)習(xí)與借鑒俭令,豐富的文檔能幫助新手更好的理解和使用它。這些實(shí)用的模塊都是來(lái)自于開(kā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 代理池鹰服,為大型分布式爬蟲(chóng)提供高可用低延遲的代理 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)爬蟲(chóng)庫(kù)顿肺,極易上手。示例代碼:
import wechatsogou
ws_api = wechatsogou.WechatSogouAPI()
ws_api.get_gzh_info('微信名稱(chēng)')
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 代碼片段集合困后。中文
<u style="text-decoration: none; border-bottom: 1px dashed grey; color: rgb(26, 26, 26); font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"></u>
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:使用類(lèi)似于 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)畫(huà)腳本
87颊糜、pudb:基于控制臺(tái)的全屏 Python 可視化調(diào)試器哩治。比 pdb 好用太多了,特性:
- 源碼語(yǔ)法高亮衬鱼,棧业筏、斷點(diǎn)、變量可見(jiàn)并且一直動(dòng)態(tài)更新鸟赫。變量展示還有很多可以定制化的功能蒜胖。
- 基于鍵盤(pán),簡(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)行集成
- 等等
</u>
89苍糠、hue:開(kāi)源的 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 編寫(xiě)的 NoSQL 數(shù)據(jù)庫(kù),使用 json 文件存儲(chǔ)數(shù)據(jù)掸刊。它區(qū)別于 SQLite 的關(guān)系性數(shù)據(jù)庫(kù)免糕。同樣的小、不需要依賴(lài)外部服務(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ù)類(lèi)線下聚會(huì)的命令行工具烛恤,讓使用者可以更加方便母怜、及時(shí)的獲取技術(shù)類(lèi)活動(dòng)資訊
93、termtosvg:Python 寫(xiě)的終端記錄器缚柏。通過(guò)命令 termtosvg
運(yùn)行該工具苹熏,然后在終端執(zhí)行你要展示的命令,最終輸入 exit
命令結(jié)束錄制币喧,本地會(huì)生成一份 SVG 動(dòng)畫(huà)轨域,可用于分享、展示終端操作杀餐。效果如下:
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ù)是百度開(kāi)源的 Python 語(yǔ)言基礎(chǔ)庫(kù)问欠,致力將 DEV 從涉及底層操作肝匆、Util 操作類(lèi)解放出來(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 類(lèi), Exception classes for CUP
|-- __init__.py module 默認(rèn)__init__.py, Default __init__.py
|-- log.py module 打印日志類(lèi)设捐,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ù)支持的類(lèi)(比如心跳兼吓、線程池 based 執(zhí)行器等等) Heartbeat臂港、Threadpool based executors、file service视搏、etc
|-- thirdp package 第三方依賴(lài)純 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 開(kāi)發(fā)的一個(gè) C/S 服務(wù),是 Linux/Unix 系統(tǒng)下的一個(gè)進(jìn)程管理工具次和,不支持 Windows 系統(tǒng)反肋。它可以很方便的監(jiān)聽(tīng)、啟動(dòng)踏施、停止石蔗、重啟一個(gè)或多個(gè)進(jìn)程。用 Supervisor 管理的進(jìn)程畅形,當(dāng)一個(gè)進(jìn)程意外被殺死养距,supervisort 監(jiān)聽(tīng)到進(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)的微信公眾號(hào)文章爬蟲(chóng)。自帶 UI 界面丁恭、分析報(bào)告曹动、搜索功能