學習Python的迷茫,如何高效有趣地學習Python?
最近開始學習Python語言,學完了《與孩子一起學編程》,看完了官方的tutorial。現在正在看中文版的《Learn Python》,感覺這本書講的實在是太多了,更像一本參考書,學習的興趣也降低了,我很想去弄一些網頁抓取,抓取數據之類的,可是又覺得基礎不夠,各位有經驗的前輩們請求指教(本人非計算機專業,但是對這方面還是挺感興趣的,每天大概能抽出2小時左右的時間去學習Python)
學習Python,或者說學習編程,千萬不要照搬以往的學習經驗!千萬不要,千萬不要!最後肯定浪費時間,一無所獲!
對於一個編程零基礎的同學,想要高效的學習Python,一定要認識到編程確實和以往接觸的學科很不一樣。要說有什麼學科是和Python的學習路徑差不多的話,可能就是英語了!
因為,兩者都是從實際應用的角度出發,強調的是實踐和實用而不是去強調諸如物理、化學等學科的「解釋性」(與實用主義相對)。
- 單詞之於英語,就如關鍵詞之於Python
- 語法(grammar)之於英語,就如句法(syntax)之於Python
- 作文之於英語,就如項目之於Python
學習英語的目的就在於溝通和交流,學習Python的目的就在於靈活的使用計算機。
學習準則:
1. 在學習Python的初期要學會淺嘗輒止,不要深究!收起你的好奇心,一切以最終的實現效果為準。
我們在學習的初級階段,不強調英語底層,詞的演化、造詞的規律等。學習Python我們也不考慮它的底層實現。
但是,我們學習其他學科不會在一開始就上升到知識的應用層,也不會不關注學科基礎。就像學習數學你不了解加減乘除、學習歐式幾何不先了解公理,這樣是絕對行不通的!所以,分析到這裡只是想強調,學習Python一定要從應用的角度出發,不用去管為什麼在Python 2.X 中的浮點數除法和我們預期的不同。只要知道Python是這樣就可以了!
2. 學習Python要以應用(項目)推動,實現即可,不強調優雅及效率。
比如:一個問題是,如何反向列印一個字元串?
不用追求最pythonic,最高效的方法!只要成功方向列印就可以了!
比如:爬取一個頁面中的所有電話號碼?
用正則表達式的話,就去看看正則表達式。能正確匹配就可以了,不用再多去了解分組等
去哪裡找比較好玩的Python項目,在學習初期我推薦一些具有解密元素的Python遊戲!
The Python ChallengePython編程解密遊戲,需要有一點Python編程基礎,有點古老但很有趣。
Codewars: Train your coding skillsCodewars 中有一些針對Python語言的小挑戰,比如說如果想在由你設計一個ATM機,確保用戶輸入的密碼必須是六位且均為數字,否則不能通過。每一個題目都有大量的測試來測試你的代碼,同時你也可以看到你代碼的運行效率。
爬蟲闖關--1
學習Python爬蟲的也可以嘗試挑戰 @黑板客 的爬蟲闖關。
3. 學習Python一定要學會記筆記,查文檔,只看是沒有用的,一定會忘!
Python有多少標準包,有多少非標準包。每個包中有多少類和方法,每個方法有多少參數?想要看一遍教程就熟練使用?不存在的!
所以,在看教程的時候一定要學會自我總結,形成一個備忘錄。在編程的時候忘記了,查查自己的筆記再結合help()函數。如此反覆,才能真正的掌握!
以pandas為例,在做筆記(備忘錄)時,一定要按照框架列。在不知道如何解決時,通過框架快速定位到相應的知識盲點,再通過筆記或者pandas的文檔解決它!
4. 學習Python,框架很重要。從了解Python的框架開始,打好基礎!
找一本好的Python書籍,先通讀一遍。再仔細看看書章標題的設置,自己總結一下框架。以後,遇到問題,才能知道問題出在哪裡,從而找到解決方案!
找到好的入門書,可以參考在這個問題上,我的回答。
Python入門學習指南? - 知乎總之,學習Python和我們學習其他學科來在高考取得好成績的思路完全不同。
總結
收起好奇心,應用驅動,問題定位,框架優先!
—————— 知了自薦 ——————
在學習Python的時候一些可以幫助你學習的工具也是必不可少的。這裡就要推薦一下我們自己的APP—— 知了學習社 ,可能有廣告的嫌疑。不過,我們的APP確實是在移動端唯一可以用來互動式學習Python的工具。
特別是工作和課業比較繁忙的同學,在空閑的時間拿出手機就可以系統的學習Python了!
當然,除了Python之外,還有HTMLCSS、JS、經管以及心理學的基礎課程。這些課程也是免費分享給大家的。
APP目前還在第一版的測試階段,可能還存在著諸多不足,希望大家可以參與進來提出更多的建議。一起維護一個知識分享的社區。
如果,你也想分享你自己的知識和技能,也可以在知了學習社上傳自己的課程。謝謝大家!
APP下載地址: 知了APP下載鏈接
哎╮( ̄▽ ̄")╭,我覺得這現象很典型,我也在我的這篇:《那種情懷──論技術人的讀書、學習與氛圍 - 知乎專欄》里講到了。
興趣會在一直看書而不實幹的時間內被消耗.想學爬蟲又擔心基礎不夠的話, 可以先試著用Scrapy.按照每天2個小時的進度, 先花1天的時間把文檔過一遍.Scrapy 0.24 文檔鑒於題主是非計算機專業, 也許你還需要了解以下內容:
- HTML標籤的基礎知識,能看懂標籤的意義就好
- http基礎知識, get, post,json這些亂七八糟的名詞是什麼鬼
以上都可以在w3school 在線教程 這個網站得到基本的了解.
假設以上基礎題主已經有了, 可以找豆瓣或者其它一些小站,參照文檔開始寫個小爬蟲遇到一些需要驗證或者Cookie的就先放棄吧, 入門先專註於讓爬蟲能跑起來, 這也是維持學習興趣的方法當你達到可以隨心所欲寫個爬蟲爬數據的地步,可以考慮優化了, 什麼防爬, 用戶驗證, Cookie, 模擬登錄, 多線程提高爬取效率之類的...我一開始就是先對豆瓣下的手, 在第2天的時候寫了個小爬蟲爬了100多萬的書的數據存到資料庫里,有了數據卻不知道拿來幹什麼, 感覺沒什麼意思. (值得一提的是, 豆瓣有個防爬驗證, 爬取速度過快會要求你輸驗證碼以判定你不是機器人. 記得把延遲設置一下, 不然你的爬蟲會很討人厭的)
於是打算去爬知乎,聽說知乎防爬比較厲害(之前試過被知乎封IP段),於是打算去搞個代理池通過高匿名代理來爬知乎, 在網上找了個代理買了半年的服務, 結果發現提的代理都連不上, 感覺太麻煩了, 乾脆自己去爬代理, 期間覺得scrapy對爬代理這種小東西有點殺雞用牛刀的感覺, 於是自己用pycurl + beatifulsoup寫了個簡易爬蟲來爬, 現在有一些短時間內比較穩定免費代理可以用了, 感覺可以開始爬知乎了. 目前只實現了爬取某人的動態並發郵件到自己的郵箱, 嘛, 就像這位仁兄做的那樣
能利用爬蟲技術做到哪些很酷很有趣很有用的事情? - 伍新生的回答以上的經歷從開始看文檔到現在, 大概花了10天的時間, 期間有大部分時間在查資料.還有考慮先自己寫還是用框架等這些無謂的消耗里, 所以別想這麼多, 決定一個方向直接走起, 你會發現你覺得好像很難的東西, 在幾天後覺得其實沒那麼困難~我寒假學python,只學了10天就開始學著寫爬蟲。。。一邊做一邊看書看別人的博客,找源碼分析。 在寫的過程中就能發現自己缺少什麼,需要學習什麼,要學到什麼程度,以及最為重要的學這個是為了什麼,能夠做哪些事情。 寫過一些簡單的爬蟲和小腳本之後,開始系統的看書,因為這時候就知道該怎麼系統的學習了。 有目標的學習比漫無目的的學習進步要快得多。
Python是一門入門相當簡單的語言。
簡單到什麼程度呢?如果有時間專門去學習的話,有編程基礎的人一周入門、零基礎一個月入門完全沒有任何問題。在一家培訓機構里,用七天時間足夠給你講完Python的所有語法知識。
但是這種狀態僅僅只是入門,你明白了基礎的語法知識,離真正能做事還差的好遠呢。
Python的強大之處就在於它的各類庫,想要熟悉、掌握這些庫,必定是一個漫長而且辛苦的過程。
好在題主的方向特別明確,單單針對爬蟲方向,學起來還是比較簡單的。
CSDN上有很多系統的爬蟲入門教程,題主可以常看看。
當然啦,在學習的過程中一定要保持自己的動力,持之以恆。
比如我學爬蟲的動力是什麼呢?因為偶爾看到的一篇文章。
為了給題主更多的動力,我決定貢獻出這篇文章: Python爬蟲之——爬取妹子圖片
以下內容來自上述鏈接,版權歸作者所有。
環境:python 3.6
註:單線程版以在安卓的Qpython(py2.7)上運行成功
第三方庫
requests:解析url
beautifulsoup4:不會正則表達式童鞋的福音,可以容易的提取到html文件中各種標籤及其屬性安裝方法:
pip install requests
pip install beautifulsoup4如果有錯誤請自行解決
目標
http://mzitu.com
話說回來,我半年前就開始學習py爬蟲,但當時應該是興趣不足,導致半途而廢,所以說興趣非常重要,我們的目標應該可以使大家有很大的興趣,激勵自己學習爬蟲。原理
學習爬蟲,首先是要學習它的原理。打開網址(為了防止和諧我就不上圖了 ),大家可以發現,一共有141頁,每頁都有很多套圖,如果要你手動去保存,怎麼操作?我想應該是這樣,從第一頁開始,點進第一個套圖,然後保存每張圖片,然後進行第二個套圖……第一頁完了之後第二頁,從第一個套圖開始,保存保存……這就是原理,當然,雖然這樣能達到這個目的,但大家應該沒有那麼多的時間,那麼我們就來學習爬蟲,來替我們保存圖片。
步驟
1.獲取網頁源碼
用瀏覽器的F12可以看到網頁的源碼,但我們現在要用Python這樣做。
#coding=utf-8
import requests
url = "http://www.mzitu.com"
#設置headers,網站會根據這個判斷你的瀏覽器及操作系統,很多網站沒有此信息將拒絕你訪問
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36"}
#用get方法打開url並發送headers
html = requests.get(url,headers = header)
#列印結果 .text是列印出文本信息即源碼
print(html.text)
如果沒問題的話結果會是這樣類似
......
$("#index_banner_load").find("div").appendTo("#index_banner");
$("#index_banner").css("height", 90);
$("#index_banner_load").remove();
});
&
&