1. 程式人生 > >你是如何自學 Python 的?阿里350k大神帶你入門到精通Python

你是如何自學 Python 的?阿里350k大神帶你入門到精通Python

其實python非常適合初學者入門。相比較其他不少主流程式語言,有更好的可讀性,因此上手相對容易。自帶的各種模組加上豐

富的第三方模組,免去了很多“重複造輪子”的工作,可以更快地寫出東西。配置開發環境也不是很複雜,mac和linux都內建了

python。另外據我所知,不少學校也開始使用python來教授程式設計課程。

我就是完全通過網上資源自學python的。歡迎各位到來Python學習群:301056069 一起討論視訊分享學習。


從在校時候用python接活賺零花錢,到在創業公司用python開發商業網站和遊戲後臺。所有遇到的問題,幾乎都可以從網際網路上

的公開資源找到答案。

關於自學python,個人最大的3點經驗:

  1. 找一本淺顯易懂,例程比較好的教程,從頭到尾看下去。不要看很多本,專注於一本。把裡面的例程都手打一遍,搞懂為
  2. 什麼。我當時看的是《簡明python教程》,不過這本書不是非常適合零基礎初學者。零基礎推薦《與孩子一起學程式設計》,
  3. 或者看 Python入門。

 

  1. 去找一個實際專案練手。我當時是因為要做一個網站,不得已要學python。這種條件下的效果比你平時學一門新語言要好
  2. 很多。所以最好是要有真實的專案做。可以找幾個同學一起做個網站之類。注意,真實專案不一定非要是商業專案,你寫一個只是自己會用的部落格網站也是真實專案,關鍵是要核心功能完整。
  3. 最好能找到一個已經會python的人。問他一點學習規劃的建議,然後在遇到卡殼的地方找他指點。這樣會事半功倍。但是,要學會搜尋,學會如何更好地提問。沒人願意幫你寫作業或是回答“一搜便知”的問題。

 

然而,別人的經驗未必能完全複製。比如我沒有說的是,在自學python之前,我已在學校系統學習過其他的程式語言。

對於完全沒有程式設計經驗的初學者,在學習python的時候,面對的不僅僅是python這門語言,還需要面臨“程式設計”的一些普遍問題,比如:

  • 從零開始,不知道從何入手,找了本程式設計教材發現第二章開始就看不懂了
  • 缺少計算機基礎知識,被一些教程略過的“常識性”問題卡住
  • 遇到問題不知道怎麼尋找解決方案
  • 看懂語法之後不知道拿來做什麼,學完一陣子就又忘了
  • 缺少資料結構、設計模式等程式設計基礎知識,只能寫出小的程式片段

所以除了前面說的3點經驗,給初學程式設計者的額外建議:

  • 首先要有信心。雖然可能你看了幾個小時也沒在螢幕上打出一個三角形,或者壓根兒就沒能把程式執行起來。但相信我,幾乎所有程式設計師一開始都是這麼折騰過來的。
  • 選擇合適的教程。有些書很經典,但未必適合你,可能你寫了上萬行程式碼之後再看它會比較好。
  • 寫程式碼,然後寫更多的程式碼。光看教程,編不出程式。從書上的例程開始寫,再寫小程式片段,然後寫完整的專案。
  • 除了學習程式語言,也兼顧補一點計算機基礎,和英語
  • 不但要學寫程式碼,還要學會看程式碼,更要會除錯程式碼。讀懂你自己程式的報錯資訊。再去找些github上的程式,讀懂別人的程式碼。

這是一份簡單入門的教程!

利用Python爬蟲我們可以獲取大量有價值的資料:

1.爬取資料,進行市場調研和商業分析

爬取知乎優質答案,篩選各話題下最優質的內容; 抓取房產網站買賣資訊,分析房價變化趨勢、做不同區域的房價分析;爬取招聘網站職位資訊,分析各行業人才需求情況及薪資水平。

2.作為機器學習、資料探勘的原始資料

比如你要做一個推薦系統,那麼你可以去爬取更多維度的資料,做出更好的模型。

3.爬取優質的資源:圖片、文字、視訊

爬取商品的評論以及各種圖片網站,獲得圖片資源以及評論文字資料。

掌握正確的方法,在短時間內做到能夠爬取主流網站的資料,其實非常容易實現。

 

 

首先我們來了解爬蟲的基本原理及過程

大部分爬蟲都是按“傳送請求——獲得頁面——解析頁面——抽取並儲存內容”這樣的流程來進行,這其實也是模擬了我們使用瀏覽器獲取網頁資訊的過程。

簡單來說,我們向伺服器傳送請求後,會得到返回的頁面,通過解析頁面之後,我們可以抽取我們想要的那部分資訊,並存儲在指定的文件或資料庫中。

在這部分你可以簡單瞭解 HTTP 協議及網頁基礎知識,比如 POSTGET、HTML、CSS、JS,簡單瞭解即可,不需要系統學習。

學習 Python 包並實現基本的爬蟲過程

Python中爬蟲相關的包很多:urllib、requests、bs4、scrapy、pyspider 等,建議你從requests+Xpath 開始,requests 負責連線網站,返回網頁,Xpath 用於解析網頁,便於抽取資料。

如果你用過 BeautifulSoup,會發現 Xpath 要省事不少,一層一層檢查元素程式碼的工作,全都省略了。掌握之後,你會發現爬蟲的基本套路都差不多,一般的靜態網站根本不在話下,小豬、豆瓣、糗事百科、騰訊新聞等基本上都可以上手了。

 

 

存資料

首先,我們來說存資料,是因為在初期學習的時候,接觸的少,也不需要太過於關注,隨著學習的慢慢深入,我們需要儲存大批量的資料的時候,就需要去學習資料庫的相關知識了!

初期,我們抓到需要的內容後,只需要儲存到本地,無非儲存到文件、表格(excel)等等幾個方法,這裡大家只需要掌握with語句就基本可以保證需求了。大概是這樣的:

with open(路徑以及檔名,儲存模式) as f:

f.write(資料)#如果是文字可直接寫入,如果是其他檔案,資料為二進位制模式更好

當然儲存到excel表格或者word文件需要用到 xlwt庫(excel)、python-docx庫(word),這個在網上很多,大家可以自行去學習。

 

 

取資料

說了這麼多,我們來說說主題。怎麼來抓取我們想要的資料呢?我們一步步的來!

一般所謂的取網頁內容,指的是通過Python指令碼實現訪問某個URL地址(請求資料),然後獲得其所返回的內容(HTML原始碼,Json格式的字串等)。然後通過解析規則(頁面解析),分析出我們需要的資料並取(內容匹配)出來。

在python中實現爬蟲非常方便,有大量的庫可以滿足我們的需求,比如先用requests庫取一個url(網頁)的原始碼

import requests#匯入庫

url = '你的目標網址'

response = requests.get(url) #請求資料

print(response.text) #打印出資料的文字內容

這幾行程式碼就可以獲得網頁的原始碼,但是有時候這裡面會有亂碼,為什麼呢?

因為中文網站中包含中文,而終端不支援gbk編碼,所以我們在列印時需要把中文從gbk格式轉為終端支援的編碼,一般為utf-8編碼。

所以我們在列印response之前,需要對它進行編碼的指定(我們可以直接指定程式碼顯示的編碼格式為網頁本身的編碼格式,比如utf-8,網頁編碼格式一般都在原始碼中的<meta>標籤下的charset屬性中指定)。加上一行即可。

response.encode = 'utf-8' #指定編碼格式

至此,我們已經獲取了網頁的原始碼,接下來就是在亂七八糟的原始碼中找到我們需要的內容,這裡就需要用到各種匹配方式了,常用的幾種方式有:正則表示式(re庫),bs4(Beautifulsoup4庫),xpath(lxml庫)!

建議大家從正則開始學習,最後一定要看看xpath,這個在爬蟲框架scrapy中用的很多!

通過各種匹配方式找到我們的內容後(注意:一般匹配出來的是列表),就到了上面所說的存資料的階段了,這就完成了一個簡單的爬蟲!

 

 

當然了,在我們具體寫程式碼的時候,會發現很多上面沒有說到的內容,比如

  • 獲取原始碼的時候遇到反爬,根本獲取不到資料
  • 有的網站需要登入後才可以拿到內容
  • 遇到驗證碼
  • 獲取到內容後寫入檔案出錯
  • 怎樣來設計迴圈,獲取大批量的內容甚至整站爬蟲

剩下的我們再來慢慢的研究。

總結

 

 

Python爬蟲這種技術,既不需要你係統地精通一門語言,也不需要多麼高深的資料庫技術,高效的姿勢就是從實際的專案中去學習這些零散的知識點,你能保證每次學到的都是最需要的那部分。

當然唯一麻煩的是,在具體的問題中,如何找到具體需要的那部分學習資源、如何篩選和甄別,是很多初學者面臨的一個大問題。

本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:301056069 一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,才是掌握真正的價值所在。