绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Github上好玩的50个python项目汇总 (一)
2020-06-19 09:54:58
Github上521xueweihanHelloGithub项目汇总了很多好玩实用的项目。这里选取了50个python项目,供学习使用。该项目已有14000多star,也欢迎大家去点赞并学习。

更多关注:

濡须一扁舟:Github上好玩的50个python项目汇总 (二)zhuanlan.zhihu.com图标

1、awesome-python-webapp廖老师的 Python 入门教程中的实践项目的代码,教程在线阅读

2、Minos一个基于 Tornado/MongoDB/Redis 的社区系统

3、tushareTuShare 是一个免费、开源的 Python 财经数据接口包,TuShare 文档



4、beijing_bus北京实时公交,可以显示查询的公交到达某站还需多久


5、luokr.comPython Tornado 写的开源网站——螺壳网,访问,如图:



6、ssbcPython Django 写的种子搜索网站——手撕包菜,如图:



7、listen1Listen 1 让你用一个网页就能听到多个网站的在线音乐,支持各种平台。如图:



8、python-gems有趣的 Pyhton 代码片段集合

9、algorithm老齐的 Python 算法教程

10、python-gooseGoose 用于文章提取器,提取中文内容的示例代码:

>>> 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]
香港行政长官梁振英在各方压力下就其大宅的违章建筑(僭建)问题到立法会接受质询,并向香港民众道歉。

梁振英在星期二(12月10日)的答问大会开始之际在其演说中道歉,但强调他在违章建筑问题上没有隐瞒的意图和动机。

一些亲北京阵营议员欢迎梁振英道歉,且认为应能获得香港民众接受,但这些议员也质问梁振英有

11、mincssPython 写的用来找到 CSS 中没有用到的代码片段,并删除。适用于:想要做一个页面,但是不会写 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

# 这里改成想要参考的页面
URL = 'http://localhost:9000/page.html'

def run():
    p = Processor()
    p.process(URL)

    # 输出INlink的css的简化前和简化后的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的简化前和简化后的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这是一个运行在 Google App Engine(GAE) 上的 Kindle 个人推送服务应用,生成排版精美的杂志模式mobi/epub格式自动每天推送至您的 Kindle 或其他邮箱。

13、python-guideRequests 库的作者——kennethreitz,写的 Python 入门教程。不单单是语法层面的,涵盖项目结构、代码风格,进阶、工具等方方面面。虽然是英文版(中文翻译版),但我这个英语渣都能看懂,你肯定也可以,快去看看吧,开卷有益。在线阅读

14、flask-admin我工作中需要写一个微型的管理系统,用的就是这个框架。简直快餐型,页面都写好了,只要设置好相关配置就可以跑起来了。缺点就是文档中的例子少,开发一些特定的需求需要自己看源码,才能知道如何改。文档,下面是我跑起来之后的样子:

15、python-sdk七牛云存储 SDK。我自己在用他家的服务,上手简单、有免费额度,可以用来做‘图床’,同时,有了这个 SDK 可以写一些好用的小工具。注意:图床不能随便用,我曾经就用超了,账户的钱能扣成负数

16、superset企业级的数据探索、展示平台。功能很强大,可以用来做数据分析、展示。如下图:


17、flaskbb基于 Flask 框架做的论坛,功能有限,轻量级的论坛应用在线文档,可以在这个项目上进行二次开发,实现更加复杂的功能。在线预览



18、fuck-login模拟登录一些知名的网站,为了方便爬取需要登录的网站。注意:控制爬虫的爬取频率!

19、Young基于 Tornado 框架、MongoDB 数据库,写的功能丰富的社区项目。详细的安装步骤,适合学习如何创建社区类 Web App。在线预览,项目运行效果图:



20、textfilter基于某 1w 词敏感词库,用 Python 实现几种不同的过滤方式。用于过滤敏感词的实用模块,示例代码:

from filter import DFAFilter

gfw = DFAFilter()
gfw.parse("keywords")
print "待过滤:售假人民币 我操操操"
print "过滤后:", gfw.filter("售假人民币 我操操操", "*")

test_first_character()

# 运行结果
# 待过滤:售假人民币 我操操操
# 过滤后: 售假**币 ****

21、qrcodePython 写的生成动态、彩色、各式各样的二维码,详细的中文文档,通过 qrcode 生成的二维码样式如下:


22、httpie非常好用的命令行 HTTP 客户端,cURL 的替代者,返回的结果支持高亮,提高了可读性。用于调试接口、查看服务器返回的 HTTP 协议的信息。在线文档,下面的是 cURL 和 httpie 的返回结果对比图:



23、langid用于识别输入文本数据所属的语种,目前支持 97 种语言识别。示例代码:

import langid
text1 = "I am a coder and love data mining"
text2 = "请注明作者和出处并保留声明和联系方式"

print langid.classify(text1)
print langid.classify(text2)

# ('en', 0.9999957874458753)
# ('zh', 1.0)

24、fake-useragent伪装浏览器身份,常用于爬虫。这个项目的代码很少,可以阅读一下,看看 ua.random 是如何返回随机的浏览器身份的 ,示例代码:

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、redditreddit.com 网站的源码,通过这个项目,可以学习 Python 在构建大型项目中的使用、项目结构、代码风格、Python 技巧的使用方法等。安装教程



26、httpstathttpstat 美化了 curl 的结果,使得结果更加可读。同时它无依赖、兼容 Python3、一共才 300 多行。还可以显示 HTTP 请求的每个过程中消耗的时间,如下图:



27、PyMySQL纯 Pyton 写的 MySQL 库,纯 Python 的好处就是可以运行在任何装有 Python 解释器(CPython、PyPy、IronPython)的平台上。相对于 MySQLdb 性能几乎一样,使用方法也一样,但是 PyMySQL 安装方法极其简单——pip install PyMySQL,PyMySQL 使用示例代码:

# 下面为例子需要的数据库的建表语句
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

# 连接数据库
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        # 创建一个新的纪录(record)
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # 连接不会自动提交,所以你想下面要调用 commit 方法,存储对数据库的改动
    connection.commit()

    with connection.cursor() as cursor:
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))

        # 获取一条的纪录(record)
        result = cursor.fetchone()
        print(result)  # 结果输出:{'password': 'very-secret', 'id': 1}
finally:
    connection.close()  # 操作完数据库一要记得调用 close 方法,关闭连接

28、flask-limiter一个 Flask 的扩展库,它可以根据访问者的 IP 限制其访问频率、次数等。示例代码如下:

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一个十分方便、好用的内网穿透工具,它可以把本地某个端口的服务,通过一个安全隧道,映射到公网的一个地址。同时它提供了一个 Web 页面,展示了每个请求、响应的所有信息,便于调试本地的程序。基本的使用方法如下:

ngrok 协议 本地服务监听的端口
ngrok http 8000

创建成功会返回公网地址,然后通过该地址就可以访问到本地的服务。
本地访问 http://localhost:4040,就可以查看关于每个请求、响应的相关数据



30、glances一个可以让你一目了然你的系统情况(类 (h)top)的工具,它界面友好,安装方便:pip install glances


31、saythanks.ioKennethreitz 写的一个简单的网站(基于 Flask),用于向开源项目作者发送感谢邮件的 Web App。该项目结构简单,可以用来学习大神是如何快速开发 Web 项目、方法、代码风格、开发常用库。而且该项目的意义也特别好:感谢开源项目的作者,愿开源社区越来越好,网站地址



32、locust模拟用户行为的负载测试工具,包含友好的 Web 页面,如下图:



33、jumpserverJumpserver 是一款由 Python 编写开源的跳板机(是一类可作为跳板批量操作远程设备的网络设备)系统,实现了跳板机应有的功能。基于 SSH 协议来管理,客户端无需安装 agent。支持常见 Linux 系统,效果如下:


34、shsh 是一个成熟,用于替代 subprocess,它允许你调用任何程序,就像它是一个函数,支持 Python2.6 - 3.5

from sh import ifconfig
print ifconfig("eth0")

35、fastText.pyfastText 简而言之,就是把文档中所有词通过 lookup table 变成向量,取平均后直接用线性分类器得到分类结果。fastText 的实现

36、mongoaudit强大的 MongoDB 渗透测试工具,用于发掘 MongoDB 漏洞、并提出改善方法。

  • 安装:pip install mongoaudit
  • 运行:python mongoaudit

37、myclimycli 是一个带语法高亮、自动补全的 MySQL 命令行客户端工具。例如,连接数据库方法:mycli -h localhost -u 用户名 数据库



38、python-fireFire 是 Google 开源的 Python 库,可自动将您的代码转变成 CLI,无需您做任何额外工作。您不必定义参数,设置帮助信息,或者编写定义代码运行方式的 main 函数。相反,您只需从 main 模块调用“Fire”函数,其余工作全部交由 Python Fire 来完成。示例代码如下:

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()

# 在终端中调用效果如下:
$ ./example.py hello
Hello world!
$ ./example.py hello David
Hello David!
$ ./example.py hello --name=Google
Hello Google!

39、ngxtop解析 nginx 访问日志并格式化输出有用的信息,可以用来实时了解你的服务器正在发生的情况。安装命令 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基本算法、数据结构的 Python 实现

.
├── 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分分钟打造一个聚合的搜索引擎,使用简单,部署方便。拓展方便,基于插件式的管理。演示地址

42、grequestsRquests + Gevent 让异步 HTTP 变得简单、人性化。示例代码:

>>> 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一个可以解析 Linux 命令的网站,它可以给出命令的解释和其参数的解释,例如:ps -aux|grep python在线演示



44、certbot免费的自动启用和部署 HTTPS 的工具,让你的网站开启 HTTPS 变得简单快捷。在部署教程页面选择服务器的操作系统和 Web 服务器,之后根据给出的步骤一步步的执行命令就行了,部署教程



45、musicbox基于 Python 编写的网易云音乐命令行版本,使用起来简单优雅,能够快速安装及使用


46、django-blog-tutorial基于新版 Django 1.10 和 Python 3.5,通过 26 篇教程一步步带你使用 Django 从零开发一个个人博客系统,在实践的同时掌握 Django 的开发技巧,完成效果展示

47、aredis一款基于 Python3 asyncio 的异步 redis 客户端,支持对于单实例,连接池, 哨兵以及集群。作者希望可以找到志同道合的小伙伴集思广益,一起维护、优化。示例代码如下:

>>> 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时间漫步模块,模拟到某一个时间,使用简单方式多样,实现了装饰器、上下文等调用方式。示例代码如下:

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这一个以”撸代码“的形式学习 Python 的编程技巧的项目,针对 Python 的一些语法特性力求通过代码例子解释该知识点、同时还有一些实践项目,通过动手实践有助于知识的融会贯通。同时可以关注作者的知乎专栏学习更多的 Python 编程技巧

50、getproxy极简的抓取代理项目,无需配置。不仅提供了获取代理脚本,同时可以通过该页面,直接获取可用代理(15min 更新、类型包含http和https)

更多关注

濡须一扁舟:Github上好玩的50个python项目汇总 (二)zhuanlan.zhihu.com图标


END!

近写了一篇关于python入门的经验贴,想分享给大家:

为什么自学Python看不进去? - 濡须一扁舟的回答 - 知乎 https://www.zhihu.com/question/60402355/answer/770025809

分享好友

分享这个小栈给你的朋友们,一起进步吧。

人生苦短,不如学Python
创建时间:2020-06-18 16:48:21
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • liuxuhui
    专家
戳我,来吐槽~