學爬蟲,需要掌握哪些Python基礎? 原

入手爬蟲確實不要求你精通Python編程,但基礎知識還是不能忽視的,那麼我們需要哪些Python基礎呢?

首先我們先來看看一個最簡單的爬蟲流程:

 

第一步要確定爬取頁面的鏈接,由於我們通常爬取的內容不止一頁,所以要注意看看翻頁、關鍵字變化時鏈接的變化,有時候甚至要考慮到日期;另外還需要主要網頁是靜態、動態加載的。

第二步請求資源,這個難度不大,主要是Urllib,Request兩個庫的使用,必要時候翻翻官方文檔即可

第三步是解析網頁。請求資源成功後,返回的整個網頁的源代碼,這時候我們就需要定位,清洗數據了

談到數據,第一個要注意的點就是數據的類型,是不是該掌握!

其次,網頁上的數據往往排列十分整齊,這多虧了列表,使用大部分網頁數據整潔而有規律,所以列表、循環語句是不是也要掌握!

但值得注意得是網頁數據不一定都是整齊而有規律的,比如最常見的個人信息,除了必填選項,其他部分我就不愛填,這時候部分信息缺失了,你是不是得先判斷一下是否有數據,再進行抓取,所以判斷語句是不是也不能少!

掌握以上內容,我們的爬蟲基本上能跑起來了,但爲了提高代碼效率,我們可以藉助函數將一個程序分割成多個小部分,每部分負責一部分內容,這樣就能根據需要多次調動一個函數了,如果你再厲害點,以後開發個爬蟲軟件,是不是還要再掌握個類

第四步是保存數據,是不是得先打開文件,寫數據,最後關閉啊,所以是不是還得掌握文件的讀寫啊!

所以,你需要的掌握的最最最基本的Python知識點有

我剛整理了一套2018最新的0基礎入門和進階教程,無私分享,加Python學習q u n :227-435-450即可獲取,內附:開發工具和安裝包,以及系統學習路線圖

線程與進程

當然只掌握這些是遠遠不夠的,因爲我們還有分佈式爬蟲,爬蟲框架等,這要求我們掌握線程與進程;這兩個可能會比較陌生,我還沒接觸爬蟲時候也不懂這些,所以先來看看他們的概念

進程: 資源分配的最小單位

線程: 程序執行的最小單位

看起來太抽象了,我們打個比方吧:

進程就相當於你打開的一個個程序,如QQ,微信,微博等,而進程就相當於程序裏的每一個命令,如收發消息等

 

1.多線程與多進程

多線程、多進程顧名思義就是多個線程、進程並行,是實現多任務的好幫手,所以在效率上有

單進程+單線程 < 單進程+多線程 < 多進程+多線程

再來打個比方,假如我要給整個班級的同學發份資料,我可以通過微信一個一個地發給他們——單進程+單線程,但這效率實在太低了,特別費時;於是我可以選擇用微信羣發啊——單進程+多線程,這樣效率一下子提高了很多,但問題又來了,微信羣發上限是200人,假如我要給400人發文件,是不是就得分兩次羣發呢?爲了節省時間,我還可以一部分用qq羣發,一部分用微信羣發,這就是多進程+多線程

 

比較

可靠性 進程間不會相互影響 一個線程掛掉將導致整個進程掛掉

分佈性 多核、多機 多核

2.協程

協程不是進程或線程,其執行過程更類似於子例程,或者說不帶返回值的函數調用。

在剛剛的例子中,協程又是一個怎麼樣的存在呢?

羣發消息和調用多個程序時,都會受流量(相當於CPU)的影響而無法將資料發送出去,而假如我讓同學B幫忙發資料,他發資料時候並不佔用我的流量,因此效率更高,此時,同學B就相當於我的一個協程,所以協程在一定程度上又好於多線程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章