Python 有哪些一千行左右的經典練手項目?
不要只知道拿python寫個網站、爬蟲啥的。Python能做的事情那麼多,看了遍所有的回答,咋就沒個覆蓋全面點呢?
用Python做個練手項目還需要1000行?500行以內足以!
推薦下這個項目:aosabook/500lines
這個項目由N多個子項目組成,每個項目的代碼都在500行以內,實現一個完整的功能。
涵蓋的內容包括:
- web-server
- crawler
- template-engine
- ocr
- image-filter
- cluster
- event-web-framework
- interpreter
等等..
--2015年8月17日更新
佔個坑,準備寫下怎麼用Python處理cookies和調用系統命令行命令。過幾天更新時估計已在紐黑文了。--2015年8月9日更新感謝評論區的知友提醒,構造HTTP包可以用requests庫,會輕便很多。這個庫的宣傳語也很有趣Requests: HTTP for Humans
www.python-requests.org/
不過requests庫並不是Python的自帶庫,使用前需要進行安裝。Windows或Linux用戶可以用pip進行安裝。(前提是電腦已裝過pip包管理工具)
在命令行下輸入:
pip install requests
即可完成安裝
有了requests後,構造POST請求就方便得多。
import requests
username = "your_username"
password = "your_password"
payload ={"action":"login","username":username,"password":password,"ac_id":"3","type":"1","wbaredirect":"http://net.zju.edu.cn",
"mac":"undefined","user_ip":"","is_ldap":"1","local_auth":"1"}
url = "https://net.zju.edu.cn/cgi-bin/srun_portal"
res = requests.post(url, data = payload)
#print response
print res.text
構造其他類型的HTTP請求也很方便
import requests
#GET
res = requests.get("http://www.baidu.com")
#POST
res = requests.post("http://www.baidu.com")
#DELETE
res = requests.delete("http://www.baidu.com")
#PUT
res = requests.put("http://www.baidu.com")
---2015年7月8日更新
換成電腦答題,關於用Python寫學校無線登陸腳本的一些步驟。〇、查看登陸頁面的結構
以我們學校為例:在連接學校wifi但沒有登陸時,無論你在地址欄敲入什麼網址,都會被重定向到http://net.zju.edu.cn這個頁面。在此頁面輸入用戶名密碼並登陸後,才能上網。
一、用Chrome找到完成登陸操作的數據包
在Chrome按下F12審查元素,選擇netwrok選項,勾選保存日誌(preserve log),因為有可能登陸成功後頁面發生跳轉,這時需要我們保存日誌。輸入用戶名密碼後,單擊登陸。這時你會看到瀏覽器向伺服器發送了一堆數據包: (從上圖的密碼框的長度來看,我們能得出一個規律:程序員的密碼一般都很長)其中我們需要找到包含用戶名密碼的數據包,這個包最為關鍵,因為它完成了登陸操作。上圖中紅框內的就是這個包。一個技巧,一般包含用戶名密碼的數據包都會以POST方法發送。因為它是瀏覽器遞交數據至伺服器,而且是敏感信息,不應出現在url中。從REST HTTP的層面理解,它更改了伺服器的狀態。二、分析數據包的格式
我們點開這個包,會看到form data中出現了username,password欄位,這就是我們想要的數據包。
在這個包的header中我們也可以找到這個包的目的地址,截圖中沒有顯示出來,它是:https://net.zju.edu.cn/cgi-bin/srun_portal三、用Python構建符合條件的數據包,發送到伺服器對應地址直接上代碼了,重點是構造和第二步抓包得到的一樣的POST數據。#Import urlencode() in this package to encode post data
import urllib
#Import http relevant functions
from urllib2 import Request, urlopen, URLError, HTTPError
username = "your_username"
password = "your_password"
data ={"action":"login","username":username,"password":password,"ac_id":"3","type":"1","wbaredirect":"http://net.zju.edu.cn",
"mac":"undefined","user_ip":"","is_ldap":"1","local_auth":"1"}
data = urllib.urlencode(data)
try:
req = Request("https://net.zju.edu.cn/cgi-bin/srun_portal")
response = urlopen(req,data, timeout = 10)
content = response.read()
response.close()
except URLError, e:
if hasattr(e, "reason"):
info = "[ERROR] Failed to reach the server.
Reason: " + str(e.reason)
elif hasattr(e, "code"):
info = "[ERROR] The server couldn"t fullfill the request.
Error code: " +str(e.code)
else:
info = "[ERROR] Unknown URLError"
cPrint(info, COLOR.RED)
return False
except Exception:
import traceback
print "Generic exception: " + traceback.format_exc()
return False
完整代碼參見https://github.com/zjusbo/ZJUWLAN_AUTO_LOGIN
運行一次代碼,成功的話,會發現電腦已經能上網了。如果題主是學生的話,可以寫寫學校無線的自動登錄腳本,其實核碼沒幾行,就是構造一個GET或POST請求,發到驗證的地址就好。不僅提高上網效率,還能分享給校內的同學們。
如果深挖這個技術的話……
需要用Chrome抓包(或其他抓包程序),構造正確的request;
處理HTTP返回碼,處理異常(超時,密碼錯誤,伺服器無法訪問等);
處理COOKIE【如果需要的話】;
讓程序記住用戶密碼,以供下次自動登錄的話,要用到資料庫存儲;
密碼最好加密存儲,實現個AES吧;
AES的密鑰如何選取?各個用戶的密鑰別用一樣的,那獲取本機網卡的MAC地址;
索性把自動發現ZJUWLAN(我們學校的wifi名),自動連接wifi,斷線重連也搞定了;
答主實現了以上的功能,代碼量才六七百行。
https://github.com/zjusbo/ZJUWLAN_AUTO_LOGIN
其實以此項目為基礎,可以舉一反三。
破解其他同學的wifi賬號,因為賬號名就是學號,密碼暴力枚舉。你會發現好多同學的密碼真的很脆弱。
還可以用腳本模擬瀏覽器登錄網站,但有的網站需要輸圖片驗證碼,又需要寫模式識別的代碼(不過好像有現成的Python庫)。
有的網站被和諧了,需要讓腳本掛上代理訪問,那就再加點代碼。
學無止境啊。謝邀。據我了解,沒有千行左右的「經典」練手項目。但是我可以推薦一些練手項目。這些項目來著 教你閱讀Python開源項目代碼 - Python之美 - 知乎專欄 :
和工作中看別人代碼差不多,基本每個人、每個項目、每個團隊都有自己寫代碼的風格,比如變數命名風格、某些語言特性使用方式、代碼規範要求、目錄風格等,其實開源項目的作者也是一樣。看代碼,如看人(團隊)。 首先介紹下我的喜好(排名分先後):
1. kennethreitz。requests和python-guide作者。他還有一個非常勵志的故事,有興趣的可以看 誰說程序員不是潛力股?
2. mitsuhiko。flask、Jinja2、werkzeug和flask-sqlalchemy作者。
3. sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等項目的主要貢獻者和維護者。
4. ask。Celery及相關依賴的作者。
5. ajdavis。mongo-python-driver(pymongo)、tornado等項目的主要貢獻者。
6. bitprophet。fabric、paramiko(Python的ssh庫)作者。
前2個是公認的Python領域代碼寫的最好的、最有創意的工程師。看他們的代碼不會錯
初學者推薦閱讀項目
初學者可以先閱讀一些代碼量比較少的,最好是單文件的項目:
1. GitHub - kennethreitz/pip-pop: Tools for managing requirements files.
2. GitHub - kennethreitz/envoy: Python Subprocesses for Humans?.
3. GitHub - kennethreitz/records: SQL for Humans?
4. GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.
5. GitHub - mitsuhiko/pipsi: pip script installer
6. GitHub - mitsuhiko/unp: Unpacks things.
7. GitHub - chrisallenlane/cheat
8. GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.
9. GitHub - mitsuhiko/platter: A useful helper for wheel deployments.
10. GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, amp;amp;amp;c.
看代碼主要是了解別人寫代碼的方式,語法實踐這些內容。看完之後,你可以針對這些項目能解決的問題自己寫個項目,寫完之後和上述項目去對比一下,看看哪些方面做的不好。
歡迎關注本人的微信公眾號獲取更多Python相關的內容(也可以直接搜索「Python之美」):
http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二維碼自動識別)
最近依然有小夥伴私信我爬蟲類的問題…或者提問邀我…然而並不太有時間鼓搗了。尤其是諸如模擬登陸知乎的問題,不停地有人私信問評論問。知乎有一點修改,之前回答里貼出來的代碼的確不能用了,直接用這個回答里提到的項目就可以了。
專欄還是不太有人看,所以把小夥伴的項目安利到這裡吧。簡單介紹:知乎爬蟲。功能和文檔都比較完善了,可以當作API來用。
介紹在此 知乎非官方 API 非官方使用指南 - 小段同學的雜記 - 知乎專欄Github地址 7sDream/zhihu-py3 · GitHub(Python2類似項目地址 egrcc/zhihu-python · GitHub)項目並不複雜。稍微有點爬蟲的知識都可以看懂。
其次作為針對知乎的爬蟲,大家可能會比較熟悉。可以利用裡面提供的一些基礎的功能,組合一些個性化的實現效果出來。比如利用裡面提供對問題、答案、用戶的各種操作,你完全可以實現RSS,批量保存自製電子書,或者爬更多數據做分析,或者針對指定話題下的問題進行跟蹤與分析,找到可能會火的潛力問題。當然上面這些其實也已經有人做過了
比如 SimplyY/zhihu-rss · GitHub (RSS)比如 如何保存某位知乎用戶的所有答案? - 知乎用戶的回答 (保存知乎答案)比如 看知乎 - 每天三次,為你精選知乎最佳答案(這個項目有點大了…)至於分析潛力問題那個,因為項目里對話題的處理還不完善,所以並不能直接調用實現。有能力的小夥伴希望能把 Chrome 插件做出來啊!感覺還是很有用的!
不過這個想法來源於 你開發過什麼不尋常的程序? - 知乎用戶的回答這個可以作為一個實現,不過也已經不更新了 能利用爬蟲技術做到哪些很酷很有趣很有用的事情? - 張方舟的回答我之前一個很簡陋的實現 知乎將如何應對「狗日的知乎」計劃? - 段曉晨的回答當然這個回答的根本目的還是在於安利 7sDream/zhihu-py3 · GitHub 這個項目。提到其他的實現只是為了給大家提供一些思路,讓大家可以更好地折騰。
希望能給初學爬蟲的小夥伴一點幫助。
希望能給對基於知乎內容數據處理感興趣的小夥伴提供便利。如果有小夥伴做出來功能完善的項目可以留到評論里,很樂意幫大家安利出去~以上。Python 應用比較雜,在我看來並無所謂經典的練手項目,不以應用為目的的學習效率會非常低的。
工作,練手的地方頗多,日常使用即可。自動化,數據分析,寫一些日常使用的小工具等等。
個人,從你喜歡的方向著手,拿我來說,我經常看 Dota 視頻更新,就寫了 Dota視頻專區 ,從優酷自動抓取最新視頻更新到我的網站,並且自動發微博(Dota更了嗎),以前還做過類似的視頻解說分析,Dota知名解說在優酷粉絲重合率分析;我特別喜歡音樂,於是做了 1983 http://m1983.net/., 評論從網易雲熱評中抓的。
我其實很討厭 Python 這門語言(尤其是縮進,簡直反人類啊),但是不知不覺作為我的第二語言(第一語言是 C++ )已經用了三年了,因為它確實幫我解決了很多實實在在的問題(基本上你能想到的庫,它都是支持的)。
所以說,並不需要經典的練手項目,用它來解決實際的問題就是最好的鍛煉。今天 一如既往最炫酷的雲爬蟲——造數 給大家帶來一批寶貝,大家可以在深夜裡獨自一人默默研究把玩,也可以在廣場上一邊遛狗一邊和盆友們開心品鑒。
經典入門及第三方庫
- vinta/awesome-python 精心設計的Python學習框架,書籍和軟體
- nvbn/thefuck 華麗的應用程序更正您以前的控制台命令
- pallets/flask、django/django Python的web框架
- requests/requests 強大的庫,相信你一定學過
- ipython/ipython 生產性互動式計算系統
- python/cpython Python編程語言官方文檔
好玩的項目
- warner/magic-wormhole 把文件從一台電腦安全地複製到另一台
- pyvideo/pyvideo 和Python相關的視頻
- 7sDream/zhihu-oauth 知乎官方未開放的 OAuth2 介面
- errbotio/errbot 最簡單和最流行的聊天機器人
- fogleman/Minecraft 用Python寫的我的世界
- mopidy/mopidy 一個可擴展的音樂伺服器
- Eloston/ungoogled-chromium 可以修改Google Chromium組件
- livid/v2ex 在Google App Engine上運行的社區
- overviewer/Minecraft-Overviewer 展示高解析度地圖
- charlierguo/gmail Google Mail的Pythonic界面
- egirault/googleplay-api Google Play非官方的Python API
(有沒有想過 用Python 自己寫一個Minecraft,筒子們?
網路爬蟲
- LiuXingMing/SinaSpider 新浪微博爬蟲(Scrapy、Redis)
- binux/pyspider Python中強大的網路爬蟲系統
- bowenpay/wechat-spider 微信公眾號爬蟲
- jhao104/proxy_pool Python爬蟲代理IP池(proxy pool)
- smicallef/spiderfoot SpiderFoot,開源腳印和情報收集工具。
- lining0806/PythonSpiderNotes Python入門網路爬蟲之精華版
- Germey/Zhihu 崔慶才博主寫的知乎爬蟲
- gnemoug/distribute_crawler 分散式網路爬蟲
- Chyroc/基於搜狗微信搜索的微信公眾號爬蟲介面
- ResolveWang/weibospider 分散式微博爬蟲(PC端抓取)
- airingursb/bilibili-user Bilibili用戶爬蟲
- yanzhou/CnkiSpider 中國知網爬蟲
數據相關
- donnemartin/data-science-ipython-notebooks 綜合型的數據科學教程
- sqlmapproject/sqlmap 自動SQL注入和資料庫接管工具
- mitmproxy/mitmproxy 針對滲透測試員和軟體開發人員的互動式TLS功能攔截HTTP代理
- rushter/data-science-blogs 很多數據科學的博客
- ujjwalkarn/DataSciencePython 通用數據分析和機器學習任務
- justmarkham/DAT3 華盛頓的大數據課程
- billryan/algorithm-exercise leetcode/lintcode題解
- bitly/data_hacks 使用命令行進行數據分析
機器學習
- MorvanZhou/tutorials 機器學習相關教程
- ahangchen/GDLnotes 谷歌深度學習筆記
- tensorflow/models 使用TensorFlow構建模型
- astorfi/TensorFlow-World TensorFlow的簡單和現成的教程
- fchollet/keras Python深度學習庫,運行在TensorFlow,Theano或CNTK
- josephmisiti/awesome-machine-learning 精心設計的機器學習框架,書籍和軟體
- songrotek/Deep-Learning-Papers-Reading-Roadmap 深度學習論文閱讀路線圖
- MLWave/Kaggle-Ensemble-Guide Kaggle組合指南的代碼
- eriklindernoren/ML-From-Scratch 機器學習模型和演算法
- humphd/have-fun-with-machine-learning 機器學習與神經網路圖像分類的初學者指南
- arielf/weight-loss 機器學習符合酮症:如何有效減肥
- luispedro/BuildingMachineLearning 本書用Python構建機器學習系統的源代碼
更多精彩,關注公眾號:造數
大家如果有對爬蟲感興趣的,不妨來看看我們的課程
Python爬蟲
練手的話,可以自己寫一個web框架+模版語言+orm,實現最小最核心功能的話,每一個可以做到一千行左右。
過程中會讓你了解到Python的強大和可愛之處。比如寫web框架,你會大量使用到threading local,正則表達式,裝飾器,描述器,類的一些較高級的特徵等~實現session的時候,你會用到加密演算法,pickle或shelf等持久化的方法~
寫模版語言的時候,你會用到抽象語法樹,遞歸等,會考慮怎麼封裝eval,使其變的安全~
寫orm的時候,最重要的當然是meta class啦,怎麼攔截類的創建,怎麼更好地利用Python的自省,怎樣設計繼承關係~
我最近就在寫一個自己心目中的比較理想的框架:url轉發,request和response的處理等借鑒bottle,session借鑒webpy,模版語言借鑒jinja2,orm和admin借鑒django,blueprint借鑒flask~~目前已經把框架主體和template language搞定~~雖然是重複造輪子,不過這一過程卻是很有樂趣^_^要做1000行代碼的,對Python應該已經比較熟悉了,可以試試下面幾個進階的練手項目。如果剛入門,下面答案里推薦了24個Python入門到綜合的練手項目:
Python 的練手項目有哪些值得推薦? - Wayne Shi 的回答
進階篇
1.Python - Python實現Python解釋器
從實現一個玩具解釋器開始學習解釋器基本知識,然後考察Python位元組碼進一步學習理解Python解釋器的內部機制,最終實現一個500行以內的Python解釋器。
2.Python - 基於Flask/RethinkDB/Backbone.js實現TODO List
使用 RethinkDB,Flask 與 Backbone.js 製作一個簡單的 todo list。
3.3.Python - Flask開發輕博客
使用Python Flask Web框架開發一個具備基本功能的輕博客平台,在其中學習Python的Web開發。
4.Python - Django 搭建簡易博客
本教程介紹如何一步步使用 Django 開發一個簡單的博客 Web應用,涉及 Django Web開發,MVC,Template等知識點,適用於有 Python 和 Django 基礎的同學。
編輯於 2016-06-22
最後:我有建立一個python學習交流群,在群里大家相互幫助,相互關心。相互分享知識,多一個人多一個想法,只有人多的時候遇到問題才會有更多的人幫你解決問題,如果你也是願意分享,不是單純的伸手黨我歡迎你來群里,先在搜索框裡面加483在加上546 最後是416 這樣你就可以找到組織大家一起來分享
快速學習python交流總群:619307290 &>483546416
我是從讀博的時候,才開始使用python的,當時是因為很多深度學習的庫用python寫的。剛剛用的時候,我看完《python入門與實踐》裡面除了python的基本功能外,還有幾個實踐應用:聊天工具、可視化等等,我覺得不錯。
如果你是本科學生,你可能是想熟悉下Class、函數管理、調用,然後再熟悉下HTTP、TCP 等基本的網路,還有資料庫。
如果是想學類抽象、網路、資料庫
我建議你寫一個聊天軟體吧,只要在Terminal 上能讓兩台電腦通訊就行。telnet
我當時是用 MongoDB 做資料庫,TCP 做通訊方法。GitHub - zsdonghao/ChatServerTCP: 保密型聊天軟體伺服器 /Private Chat Server可能你會問為什麼用 TCP 不用 HTTP, 那是因為HTTP 比較簡單,但通訊速度慢,我當時是想如果未來需要做一些實時性強的應用,比如網路遊戲。則肯定需要TCP了,需要各種握手、確認IP身份,等等。
但如果你不需要那麼強的實時性,只是想練練手,你可以用 Flask ,這是一個很簡單的 HTTP 庫,5分鐘能學會。
如果你只是想學類抽象
如果你只是想熟悉類抽象,想很好地記住它。我記得帝國理工以前教類抽象時, 是用國際象棋當作遊戲的。但你可能會問,寫一個界面也太麻煩了吧?其實當時學生不需要寫界面,老師給一組下棋紀錄給學生,學生讓程序跟著跑,如果沒有出錯,就代表程序ok了。
這看起來不怎麼帥,但這個作業確實能讓你很好地了解類抽象。
如果想學爬蟲、數據挖掘、資料庫
建議寫一個上海證監會公告爬蟲,我以前寫了一個放到github的,但朋友說要用,讓我把它刪了。。。 你可以每5分鐘掃描以下網頁,若有新公告發出,你就把pdf下載下來,然後把pdf文字提取出來,分開題目、發布時間等等,然後存在 MongoDB 裡面。
然後再做一個搜索工具,比如輸入一個關鍵字,把相關的公告自動找出來,把pdf源文複製到指定目錄,等等。在 Python 豐富而且有趣,專業而又不失活潑的第三方模塊的友情協助下,百行代碼的練手項目很有意思了,我在做爬蟲的過程中,遇到了很多需要登錄的網站,所以我就寫了個模擬登錄的小項目,GitHub - xchaoinfo/fuck-login: 模擬登錄一些知名的網站,為了方便爬取需要登錄的網站 通過學習寫模擬登錄,通過模擬登錄,能學到什麼,我在這裡做了簡單介紹 如何入門 Python 爬蟲? - 陳保保的回答 代碼還有需要改進的地方,歡迎大家一起來 pull request
這個怎麼好說,python應用範圍太廣了,1000行的爬蟲,1000行的圖形處理演算法,1000行的簡單深度學習,1000行的簡單遊戲伺服器邏輯,1000行的調試器(如grayhat一書的例子).....太多了,這樣一直舉例子舉下去可能天都亮了......
看你練習哪方面?
一、機器學習 這方面涉及到自然語言處理,圖像處理,或者就是單純的演算法實現,還有一個比較偏的 叫多 體素模式識別(功能磁共振方面)。 自然語言處理: 專門有一本書,就是系統的介紹用 python做自然語言處理 我不是做這方面的 不太了解 但是我們實驗室做 分詞 自然語言處理 都用這個玩意 圖像處理 這個我沒接觸過,但是個人覺得找篇圖像處理,計算機視覺方面的論文,實現一下他的 代碼,或者找matlab代碼翻譯成python 在計算機視覺方面python現在很火 同學就是用這個做信息可視化的機器學習基礎
推薦機器學習實戰,python版的,就是一些基礎演算法的實現,然後簡單應用,比如手寫字 體的識別,垃圾郵件的分類二、web開發:
python其實被認為做系統更加合適,但是也有人認為python做web本身就很合適。對於web這一塊,我用了一下 django這個框架,這個框架目前很流行,但是有弊端,耦合度比較緊密,我用的時間段,也沒怎麼深入了解。還有經常聽人說的兩個框架就是,web.py和Tornado。這兩個我沒用過。 爬蟲類工具編寫:這個應該屬於web類,個人覺得用這個東東寫爬蟲還是容易的,當然我說的是新手上手容易。你要學這類方面的,其實從網上找寫現成的爬蟲工具就行。比如有些人專門寫關於 爬糗事百科 的博客。裡面有源碼,你可以看看。三、遊戲開發我見過有人用python寫2048遊戲,但是用的原生的代碼寫出來的,沒有用python 的遊戲框架,我也不清楚有沒有這類框架或者工具包,而且我也不懂python是否適合寫遊戲。之所以分開講,就是為了讓題主明白自己的學習方向。題主自己把握就好。我python菜鳥一個,就是三天打漁兩天晒網。要做1000行代碼的,對Python應該已經比較熟悉了,可以試試下面幾個進階的練手項目。如果剛入門,下面答案里推薦了24個Python入門到綜合的練手項目:
Python 的練手項目有哪些值得推薦? - Wayne Shi 的回答進階篇1.Python - Python實現Python解釋器從實現一個玩具解釋器開始學習解釋器基本知識,然後考察Python位元組碼進一步學習理解Python解釋器的內部機制,最終實現一個500行以內的Python解釋器。2.Python - 基於Flask/RethinkDB/Backbone.js實現TODO List使用 RethinkDB,Flask 與 Backbone.js 製作一個簡單的 todo list。3.Python - Flask開發輕博客
使用Python Flask Web框架開發一個具備基本功能的輕博客平台,在其中學習Python的Web開發。4.Python - Django 搭建簡易博客本教程介紹如何一步步使用 Django 開發一個簡單的博客 Web應用,涉及 Django Web開發,MVC,Template等知識點,適用於有 Python 和 Django 基礎的同學。《阿里巴巴技術協會-Python與設計模式系列課程》10-20今日更新: 10、Python與設計模式--享元模式-博客-雲棲社區-阿里雲
11、Python與設計模式--橋樑模式-博客-雲棲社區-阿里雲
12、Python與設計模式--策略模式-博客-雲棲社區-阿里雲
13、Python與設計模式--責任鏈模式-博客-雲棲社區-阿里雲
14、Python與設計模式--命令模式-博客-雲棲社區-阿里雲
15、Python與設計模式--中介者模式-博客-雲棲社區-阿里雲
16、Python與設計模式--模板模式-博客-雲棲社區-阿里雲
17、Python與設計模式--迭代器模式-博客-雲棲社區-阿里雲
18、Python與設計模式--訪問者模式-博客-雲棲社區-阿里雲
19、Python與設計模式--觀察者模式-博客-雲棲社區-阿里雲
20、Python與設計模式--解釋器模式-博客-雲棲社區-阿里雲
有關Python學習,小編在此將《阿里巴巴技術協會-Python與設計模式系列課程》 分享給各位同學,今日更新0-9: 0、Python與設計模式--前言-博客-雲棲社區-阿里雲
1、Python與設計模式--單例模式-博客-雲棲社區-阿里雲
2、Python與設計模式--工廠類相關模式-博客-雲棲社區-阿里雲
3、Python與設計模式--建造者模式-博客-雲棲社區-阿里雲
4、Python與設計模式--原型模式-博客-雲棲社區-阿里雲
5、Python與設計模式--代理模式-博客-雲棲社區-阿里雲
6、Python與設計模式--裝飾器模式-博客-雲棲社區-阿里雲
7、Python與設計模式--適配器模式-博客-雲棲社區-阿里雲
8、Python與設計模式--門面模式-博客-雲棲社區-阿里雲
9、Python與設計模式--組合模式-博客-雲棲社區-阿里雲
這裡有三個爬取實踐內容推薦給樓主和各位小夥伴:
[python爬蟲] Selenium定向爬取PubMed生物醫學摘要信息[python爬蟲] Selenium定向爬取PubMed生物醫學摘要信息
本文主要是自己的在線代碼筆記。在生物醫學本體Ontology構建過程中,我使用Selenium定向爬取生物醫學PubMed資料庫的內容。 PubMed是一個免費的搜尋引擎,提供生物醫學方面的論文搜尋以及摘要。
[python爬蟲] Selenium爬取新浪微博內容及用戶信息
在進行自然語言處理、文本分類聚類、推薦系統、輿情分析等研究中,通常需要使用新浪微博的數據作為語料,這篇文章主要介紹如果使用Python和Selenium爬取自定義新浪微博語料。因為網上完整的語料比較少,而使用Selenium方法有點簡單、速度也比較慢,但方法可行,同時能夠輸入驗證碼。希望文章對你有所幫助~
[python爬蟲] Selenium定向爬取虎撲籃球海量精美圖片
在進行自然語言處理、文本分類聚類、推薦系統、輿情分析等研究中,通常需要使用新浪微博的數據作為語料,這篇文章主要介紹如果使用Python和Selenium爬取自定義新浪微博語料。因為網上完整的語料比較少,而使用Selenium方法有點簡單、速度也比較慢,但方法可行,同時能夠輸入驗證碼。希望文章對你有所幫助~
此話題阿里云云棲社區已關注,後續持續更新中
有關Python學習,小編在此將《阿里巴巴技術協會-Python與設計模式系列課程》
分享給各位同學,今日更新0-9:
0、Python與設計模式--前言-博客-雲棲社區-阿里雲
1、Python與設計模式--單例模式-博客-雲棲社區-阿里雲
2、Python與設計模式--工廠類相關模式-博客-雲棲社區-阿里雲
3、Python與設計模式--建造者模式-博客-雲棲社區-阿里雲
4、Python與設計模式--原型模式-博客-雲棲社區-阿里雲
5、Python與設計模式--代理模式-博客-雲棲社區-阿里雲
6、Python與設計模式--裝飾器模式-博客-雲棲社區-阿里雲
7、Python與設計模式--適配器模式-博客-雲棲社區-阿里雲
8、Python與設計模式--門面模式-博客-雲棲社區-阿里雲
9、Python與設計模式--組合模式-博客-雲棲社區-阿里雲
親們阿里云云棲社區已開通專欄,歡迎關注閱讀:我是程序員 - 知乎專欄
寫個編譯器唄
這裡列的項目代碼只有500行,500行,500行左右噢,
不只有爬蟲、不只有爬蟲、不只有爬蟲噢aosabook/500lines · GitHub
實現都比較精妙,可謂麻雀雖小五臟俱全。我覺得這些都可以作為練習的題目。
有一個網站叫github、有一個網站叫github、有一個網站叫github給你推薦一個有趣的練手項目:
Ricequant - Betapython可以做很多事情,但是有什麼能夠和寫一個 程序全自動炒股相比呢?
你可以從很簡單的策略寫起,比如寫個買入市場市盈率最低的100支股票,簡單吧,但是效果在過去10年里取得了20倍的收益市盈率單因子策略你也可以玩一玩複雜的機器學習,看看人工智慧能不能打敗這個市場:
滬深300指數的特徵工程和聚類分析正巧我們最近在辦比賽,練練手還有豐富的獎金和獎品等著你喲!要是一不小心拿了前三名,我們還會為你提供交易資金呢!快來看看吧~Ricequant - BetaSICP應該足夠經典吧,裡面最後一章關於編譯的那部分有個很好的項目:寫一個對 Scheme (Lisp 方言) 的編譯器。SICP是用 Lisp 寫 Lisp 編譯器;同樣,用 Python 寫 Lisp 編譯器也是一個非常優秀的項目(事實上,由於 Python 的一些特性比如內置的高階函數,個人感覺寫起來可能會比 Java 什麼的更好寫一些)。自己分別實現 parser, 環境,各個函數,eval, REPL (read-eval-print-loop), 最後試著做尾遞歸優化,這樣能對 Lisp, Python 以及編譯原理都會有更深的了解。
這個項目是我校CS入門課的最後一個項目,這裡是開源的課本和項目介紹:
課本:Composing Programs項目:Scheme課本是教授基於「用 Python 教 SCIP 的內容」編寫的,只不過所有內容都是純英文的了。在這門課里這個項目其實是「填空」,大框架已經搭好了,只需要實現剩下的部分了;如果想真正練習的話還是應該完全自己實現。用Python 3實現一個Shadowsocks服務端/客戶端,只支持AES並且完全不管性能等等的話,1000行應該夠了。之後你可以考慮逐步加入新功能,比如說支持更多的cipher,加入流量統計,解決一下C10K問題,給客戶端加個基於Qt5或者Tk的GUI界面什麼的,中途每次升級都可以和官方的服務端連一連試試。
我在github上做了個項目,專門收集,簡單易上手的項目:https://github.com/521xueweihan/HelloGithub
推薦閱讀:
※十萬行以下有哪些值得學習的開源項目?
※請推薦一些小型的C語言開源項目?
※github上有什麼好的unity開源項目?
※開源許可證都有什麼區別,一般開源項目用什麼許可證?
※OIer對於開源的態度如何?