1. 如何學習python爬蟲
爬蟲是入門Python最好的方式,沒有之一。 Python有很多應用的方向,比如後台開發、web開發、科學計算等等,但爬蟲對於初學者而
言更友好,原理簡單,幾行代碼就能實現基本的爬蟲,學習的過程更加平滑,你能體會更大的成就感。
掌握基本的爬蟲後,你再去學習Python數據分析、web開發甚至機器學習,都會更得心應手。因為這個過程中,Python基本語法、庫的
使用,以及如何查找文檔你都非常熟悉了。
對於小白來說,爬蟲可能是一件非常復雜、技術門檻很高的事情。比如有的人則認為先要掌握網頁的知識,遂 開始 HTMLCSS,結果入了前端的坑 ,瘁……
但掌握正確的方法,在短時間內做到能夠爬取主流網站的數據,其實非常容易實現,但建議你從 一開始就要有一個具體的目標。
在目標的驅動下,你的學習才會更加精準和高效。 那些所有你認為必須的前置知識,都是可以在完成目標的過程中學到的。 這里給你一
條平滑的、零基礎快速入門的學習路徑。
python學習網,免費的python學習網站,歡迎在線學習!
學習 Python 包並實現基本的爬蟲過程
大部分爬蟲都是按 「發送請求——獲得頁面——解析頁面——抽取並儲存內容」 這樣的流程來進行,這其實也是模擬了我們使用瀏覽器
獲取網頁信息的過程。
Python中爬蟲相關的包很多:urllib、requests、bs4、scrapy、pyspider 等, 建議從requests+Xpath 開始 ,requests 負責連接網
站,返回網頁,Xpath 用於解析網頁,便於抽取數據。
如果你用過 BeautifulSoup,會發現 Xpath 要省事不少,一層一層檢查元素代碼的工作,全都省略了。這樣下來基本套路都差不多, 一
般的靜態網站根本不在話下,豆瓣、糗事網路、騰訊新聞等基本上都可以上手了 。
掌握各種技巧,應對特殊網站的反爬措施
當然,爬蟲過程中也會經歷一些絕望啊,比如被網站封IP、比如各種奇怪的驗證碼、userAgent訪問限制、各種動態載入等等。
遇到這些反爬蟲的手段,當然還需要一些高級的技巧來應對,常規的比如 訪問頻率控制、使用代理IP池、抓包、驗證碼的OCR處理等等 。
往往網站在高效開發和反爬蟲之間會偏向前者,這也為爬蟲提供了空間,掌握這些應對反爬蟲的技巧,絕大部分的網站已經難不到你了。
學習 scrapy,搭建工程化的爬蟲
掌握前面的技術一般量級的數據和代碼基本沒有問題了,但是在遇到非常復雜的情況,可能仍然會力不從心,這個時候,強大的 scrapy
框架就非常有用了。
scrapy 是一個功能非常強大的爬蟲框架,它不僅能便捷地構建request,還有強大的 selector 能夠方便地解析 response,然而它最讓人
驚喜的還是它超高的性能,讓你可以將爬蟲工程化、模塊化。
學會 scrapy,你可以自己去搭建一些爬蟲框架,你就基本具備爬蟲工程師的思維了。
學習資料庫基礎,應對大規模數據存儲
爬回來的數據量小的時候,你可以用文檔的形式來存儲,一旦數據量大了,這就有點行不通了。所以掌握一種資料庫是必須的,學習目前
比較主流的 MongoDB 就OK。
MongoDB 可以方便你去存儲一些非結構化的數據 ,比如各種評論的文本,圖片的鏈接等等。你也可以利用PyMongo,更方便地在
Python中操作MongoDB。
因為這里要用到的資料庫知識其實非常簡單,主要是 數據如何入庫、如何進行提取 ,在需要的時候再學習就行。
分布式爬蟲,實現大規模並發採集
爬取基本數據已經不是問題了,你的瓶頸會集中到爬取海量數據的效率。這個時候,相信你會很自然地接觸到一個很厲害的名字: 分布
式爬蟲 。
分布式這個東西,聽起來很恐怖, 但其實就是利用多線程的原理讓多個爬蟲同時工作 ,需要你掌握 Scrapy + MongoDB + Redis 這三種工具 。
Scrapy 前面我們說過了,用於做基本的頁面爬取,MongoDB 用於存儲爬取的數據,Redis 則用來存儲要爬取的網頁隊列,也就是任務
隊列。
所以有些東西看起來很嚇人,但其實分解開來,也不過如此。當你能夠寫分布式的爬蟲的時候,那麼你可以去嘗試打造一些基本的爬蟲架
構了,實現一些更加自動化的數據獲取。
你看,這一條學習路徑下來,你已然可以成為老司機了,非常的順暢。所以在一開始的時候,盡量不要系統地去啃一些東西,找一個實際
的項目(開始可以從豆瓣、小豬這種簡單的入手),直接開始就好 。
2. 如何系統地自學 Python
是否非常想學好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學習成本太高,心裡默默敲著退堂鼓?
幸運的是,Python 是一門初學者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。
Python 的設計哲學之一就是簡單易學,體現在兩個方面:
語法簡潔明了:相對 Ruby 和 Perl,它的語法特性不多不少,大多數都很簡單直接,不玩兒玄學。
切入點很多:Python 可以讓你可以做很多事情,科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,總有一個是你感興趣並且願意投入時間的。
廢話不多說,學會一門語言的捷徑只有一個: Getting Started
¶ 起步階段
任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。
°1 硬知識
「硬
知識」指的是編程語言的語法、演算法和數據結構、編程範式等,例如:變數和類型、循環語句、分支、函數、類。這部分知識也是具有普適性的,看上去是掌握了一
種語法,實際是建立了一種思維。例如:讓一個 Java 程序員去學習 Python,他可以很快的將 Java 中的學到的面向對象的知識 map 到
Python 中來,因此能夠快速掌握 Python 中面向對象的特性。
如果你是剛開始學習編程的新手,一本可靠的語法書是非常重要的。它看上去可能非常枯燥乏味,但對於建立穩固的編程思維是必不可少。
下面列出了一些適合初學者入門的教學材料:
❖「笨方法學 Python」:http://learnpythonthehardway.org/book/
這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,非常適合快速起步。
❖「廖雪峰的 Python 2.7 教程」:Home - 廖雪峰的官方網站
Python 中文教程的翹楚,專為剛剛步入程序世界的小白打造。
❖「The Hitchhiker』s Guide to Python!」:The Hitchhiker』s Guide to Python!
這本指南著重於 Python 的最佳實踐,不管你是 Python 專家還是新手,都能獲得極大的幫助。
❖「Python 官方文檔」:Our Documentation
實踐中大部分問題,都可以在官方文檔中找到答案。
❖ 輔助工具:Python Tutor
一個 Python 對象可視化的項目,用圖形輔助你理解 Python 中的各種概念。
Python 的哲學:
用一種方法,最好是只有一種方法來做一件事。
學習也是一樣,雖然推薦了多種學習資料,但實際學習的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能需要閱讀講解數據結構和演算法的書,這些知識對於理解和使用 Python 中的對象模型有著很大的幫助。
°2 軟知識
「軟知識」則是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即使完全不了解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得「傻」了些。
對
這些知識的學習,取決於你嘗試解決的問題的領域和深度。對初學者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一會兒看 2.7
一會兒又轉到 3.0,或者徜徉在類庫的大海中無法自拔,Scrapy,Numpy,Django
什麼都要試試,或者參與編輯器聖戰、大括弧縮進探究、操作系統辯論賽等無意義活動,或者整天跪舔語法糖,老想著怎麼一行代碼把所有的事情做完,或者去構想
聖潔的性能安全通用性健壯性全部滿分的解決方案。
很多「大牛」都會告誡初學者,用這個用那個,少走彎路,這樣反而把初學者推向了真正的彎路。
還不如告訴初學者,學習本來就是個需要你去走彎路出 Bug,只能腳踏實地,沒有奇跡只有狗屎的過程。
選擇一個方向先走下去,哪怕臟丑差,走不動了再看看有沒有更好的解決途徑。
自己走了彎路,你才知道這么做的好處,才能理解為什麼人們可以手寫狀態機去匹配卻偏要發明正則表達式,為什麼面向過程可以解決卻偏要面向對象,為什麼我可以操縱每一根指針卻偏要自動管理內存,為什麼我可以嵌套回調卻偏要用 Promise...
更重要的時,你會明白,高層次的解決方法都是對低層次的封裝,並不是任何情況下都是最有效最合適的。
技術涌進就像波浪一樣,那些陳舊的封存已久的技術,消退了遲早還會涌回的。就像現在移動端應用、手游和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史么?
因此,不要擔心自己走錯路誤了終身,堅持並保持進步才是正道。
起步階段的核心任務是掌握硬知識,軟知識做適當了解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。
¶ 發展階段
完成了基礎知識的學習,必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓 Python 發揮出它的價值,當然不能停留在語法層面。
發展階段的核心任務,就是「跳出 Python,擁抱世界」。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿
爬蟲舉例,如果你對計算機網路,HTTP協議,HTML,文本編碼,JSON一無所知,你能做好這部分的工作么?而你在起步階段的基礎知識也同樣重要,如
果你連循環遞歸怎麼寫都還要查文檔,連 BFS 都不知道怎麼實現,這就像工匠做石凳每次起錘都要思考錘子怎麼使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
°1 類庫方面
「Awesome Python 項目」:vinta/awesome-python · GitHub
這里列出了你在嘗試解決各種實際問題時,Python 社區已有的工具型類庫,如下圖所示:
你可以按照實際需求,尋找你需要的類庫。
至於相關類庫如何使用,必須掌握的技能便是閱讀文檔。由於開源社區大多數文檔都是英文寫成的,所以,英語不好的同學,需要惡補下。
°2 書籍方面:
這里我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧編程」:集體智慧編程 (豆瓣)
❖「數學之美」:數學之美 (豆瓣)
❖「統計學習方法」:統計學習方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「數據科學實戰」:數據科學實戰 (豆瓣)
❖「數據檢索導論」:信息檢索導論 (豆瓣)
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 (豆瓣)
Web 網站:
❖「HTML & CSS 設計與構建網站」:HTML & CSS設計與構建網站 (豆瓣)
...
列到這里已經不需要繼續了。
聰明的你一定會發現上面的大部分書籍,並不是講 Python 的書,而更多的是專業知識。
事實上,這里所謂「跳出 Python,擁抱世界」,其實是發現 Python 和專業知識相結合,能夠解決很多實際問題。這個階段能走到什麼程度,更多的取決於自己的專業知識。
¶ 深入階段
這個階段的你,對 Python 幾乎了如指掌,那麼你一定知道 Python 是用 C 語言實現的。
可是 Python 對象的「動態特徵」是怎麼用相對底層,連自動內存管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。
這里推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對 C 語言內存模型和指針有著很好的理解。
另
外,Python 本身是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、 Haskell 等的函數式、Java
基於類的面向對象而言,它都不夠純粹。換而言之,編程語言的「道學」,在 Python
中只能有限的體悟。學習某種編程範式時,從那些面向這種範式更加純粹的語言出發,才能有更深刻的理解,也能了解到 Python 語言的根源。
這里推薦一門公開課
「編程範式」:斯坦福大學公開課:編程範式
講師高屋建瓴,從各種編程範式的代表語言出發,給出了每種編程範式最核心的思想。
值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的范型和內存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
¶ 最後的話
每個人學編程的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人。雖然聽上去有點雞湯,但是這是事實。
希望想學 Python 想學編程的同學,不要猶豫了,看完這篇文章,Just getting started~
3. 想學python去哪裡比較好
既然做好學習Python的准備,那麼我們就要知己知彼!作為一門入門語言進行學習,Python還是比較合適的!與其他語言想比,Python的學習甚至說安裝包就可以開始你的征程!當然,這里還是要說,一個程序員的修養絕對不能止於一門,兩門的編程語言,哪怕是出於就業的目的,我們都要多多了解相關的技術知識。
如今,Python 已經成為一種再主流不過的編程語言了。它天生麗質,易於讀寫,非常實用,從而贏得了廣泛的群眾基礎,被譽為「宇宙最好的編程語言」,被無數程序員熱烈追捧。
推薦一下免費學習的網站給你
1.Python Code Examples:
https://www.programcreek.com/python/
在這里你可以搜索到你想要學習的代碼示例,通過例子來進行模仿學習。
2.python中文學習大本營:
http://www.pythondoc.com/
這里有Flask資料大全,如果你需要,在這里可以找到你想要的幾乎所有的教程。
3.1Python 3 Mole of the Week :
https://pymotw.com/3/
3.2Python Mole of the Week:
https://pymotw.com/2/
Python 3 Mole of the Week系列文章,每篇介紹一個 Python 標准庫的使用.
4. Welcome to Python for you and me:
http://pymbook.readthedocs.io/en/latest/
主要是面對初學者的一個網站,介紹 Python的語法,項目經驗等。
5. CheckiO is a code game coders:
https://py.checkio.org/
看上去就很像一個游戲界面,事實上,當你使用的時候會發現:這就是一個游戲吧!相當於你學會編程之後用它做一個闖關游戲,通過補充代碼實現對應游戲要求,是很有趣的一個網站。
6.Reddit:
https://www.reddit.com/r/Python/
Reddit上有大量關於 Python 的鏈接,也會有不少程序員在這里進行交流,如果你有問題的話,可以在上面進行提問,或許能得到不錯的答復。
7.W3Cschool Python 微課:
4. 有哪些值得推薦的Python學習網站
1.Python.org
Python官方網站。你可以從這里下載Python、使用、學習Python。官方文檔自然是最權威的學習資料,只要你英文水平夠,學習起來應該不難。
2.Python教程
Python教程以及以其為代表的一系列中文Python教程。考慮到可能部分人的英文水平會成為閱讀Python官方文檔的障礙,所以中文教程也是必須的。相對於官方文檔,這批教程可能更加適合初學者,也比較能夠建立體系。
3.Stack Overflow
英語站點,50%的程序員日常工作就是從Google復制代碼,剩下的50%就是從這個網站復制了。
4.Django
以及其他常用的所有框架的文檔。不同的學習方向會有不同的框架,比如tensorflow、Flask 、Tornado、Requests、Scrapy等等。
5.CSDN
以CSDN為代表的一眾國內博客站,還有51CTO、開源中國、博客園等等。
5. 推薦幾個學習Python的免費網站
1、Python @ Coursera
Pythonspot是一個綜合教程,劃分了很多不同類別的知識板塊,首先你將擁有初學者資源來幫你開始Python的學習,然後你繼續保持前進你能學到更多關於使用Python開發web等。
6. 學習python在哪個網站可以看到大神寫的代碼
國外的大神:https://github.com/pypa/pipenv
國內的知名python工程師:https://github.com/dongweiming
7. 如何從零開始學python
1、學習的時候,我們都是要從Python的基礎語法開始學習 ,了解什麼是Python的變數 什麼是循環 什麼是函數,什麼是模塊。類等等。總之,基礎是學習以後高級開發的基石。
這個階段可以,選擇一些經典書籍或者視頻進行學習。
書籍可以看看《python快樂編程—基礎入門》這本書,是針對零基礎學生來編寫的書。
2、在學習完基礎語法的時候,你也對python有了一定程度的了解了,也知道Python有很多的學習方向,比如說數據採集方向(爬蟲),或者Web開發方向,也可能是最近特別火熱的人工智慧方向。每個方向所需要的技術都是不盡相同的,所以在我們學習完成Python的基礎語法之後,一定要慎重選擇自己之後的進階方向。
3、在進階階段,建議以最新的python視頻學習為主,相關書籍為輔,這個階段主要是學的技術是最新的,不要給自己留一個學完之後技術已經過時的慘敗後果。
此外還有一些小小的學習技巧分享給大家,希望大家調整好心態,堅持下去!
1.作為小白剛接觸編程,理解起來慢很正常。不能理解的東西,也不要死磕太久,在不斷的練習中,你對代碼的理解會越來越深。
2.個人認為,人按學習能力可以暴力分為:上手快&忘得快,上手慢&理解深,上手快&理解深。好了,第三類人我就不想多說什麼了。。。相信很多小夥伴都是第二類人!
3. 遇到問題,別死磕,多用搜索引擎,多看大牛的博客。
4. 覺得某個知識點時間花得久了,無非是想短時間投入,獲得較大的成就感,或者說想一帆風順敲代碼,別遇到什麼bug。不存在的。而且,一般情況下,花越多時間理解的知識點,花越多時間改好的bug,不是會獲得越大的成就感才對嘛?!
8. 如何自學 Python
其實python非常適合初學者入門。相比較其他不少主流編程語言,有更好的可讀性,因此上手相對容易。自帶的各種模塊加上豐富的第三方模塊,免去了很多「重復造輪子」的工作,可以更快地寫出東西。
我是真正零基礎開始學Python的,從一開始的一竅不通,到3個月後成功搭建了一個動態網站(沒有用任何框架)。相比於計算機大牛,我更加知道一個小白將會遇到什麼坑,遇到哪些難點。我把我的學習過程寫在下面,並附上在每個階段的學習資料,希望對零基礎的Python學習
9. 編寫python用哪個編輯器
使用IDLE或者Python Shell來編寫Python是非常適合於簡單程序的,但是這些工具往往將大型的編程項目變成一個個充滿絕望和沮喪的
「坑」。使用一款集成開發環境甚至是一款好的專用的代碼編輯器會讓編程充滿樂趣,但是如何選擇呢?
集成開發環境(IDE,Integrated Development Environment)是專用於軟體開發的程序。顧名思義,IDE集成了幾款專門為軟體開發
而設計的工具。這些工具通常包括一個專門為了處理代碼的編輯器(例如語法高亮和自動補全);構建、執行、調試工具和某種形式的源
代碼控制。
下面是常見的Python編輯器
Eclipse + PyDev
如果你足夠關注開源社區,那麼你一定聽說過Eclipse。Eclipse實際上是一款面向Java開發的兼容Linux, Windows和OS X的集成開發環
境。它擁有豐富的插件和擴展功能市場,這使得Eclipse適用於各種各樣的開發項目。
其中一個插件就是PyDev,它支持Python調試、代碼補全和互動式Python控制台。在Eclipse中安裝PyDev非常便捷,只需從Eclipse中選
擇「Help」點擊「Eclipse Marketplace」然後搜索PyDev。點擊安裝,必要的時候重啟Eclipse即可。
Sublime Text
Sublime Text是一款非常流行的代碼編輯器,其開發者是一名谷歌的工程師,其夢想是使之成為更好的文本編輯器。Sublime Text支持
Python代碼編輯同時兼容所有平台,並且豐富的插件(稱之為「包」)擴展了語法和編輯功能。
安裝額外的Python擴展可能會比較棘手,Sublime Text中所有的包都是用Python寫成的,並且安裝社區擴展往往需要直接在Sublime
Text中執行Python腳本。
python學習網,免費的python學習網站,歡迎在線學習!
Atom
同樣兼容所有平台的Atom被稱為是「21世紀可破解的文本編輯器」。開源的Atom擁有時尚的界面、文件系統瀏覽器和擴展插件市場,
它是使用Electron構建的,Electron使用JavaScript、HTML和CSS構建跨平台的桌面應用。Python語言由一款可在Atom運行時安裝的擴
展插件支持。
VI/VIM
在文本編輯器戰場另一側是VI(又名VIM),默認安裝在幾乎每一個UNIX系統和Mac OS X系統中,VI有著同樣的狂熱追隨。VI和VIM是
一種模型編輯器,它將文本查看從文本編輯中分離。VIM在原始VI之上做了諸多改進,包括可擴展模型和就地代碼構建。VIMScripts可用
於各種Python開發任務。
PyCharm
PyCharm是最好的一個(也是唯一一個)專門面向於Python的全功能集成開發環境。同樣擁有付費版(專業版)和免費開源版(社區
版),PyCharm不論是在Windows, Mac OS X系統中, 還是在Linux系統中都支持快速安裝和使用。
開箱即用,PyCharm直接支持Python開發環境,打開一個新的文件然後就可以開始編寫代碼。你也可以在PyCharm中直接運行和調試
Python程序,並且它支持源碼管理和項目。