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

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

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

 

第一步要肯定爬取頁面的連接,因爲咱們一般爬取的內容不止一頁,因此要注意看看翻頁、關鍵字變化時連接的變化,有時候甚至要考慮到日期;另外還須要主要網頁是靜態、動態加載的。多線程

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

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

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

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

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

掌握以上內容,咱們的爬蟲基本上能跑起來了,但爲了提升代碼效率,咱們能夠藉助函數將一個程序分割成多個小部分,每部分負責一部份內容,這樣就能根據須要屢次調動一個函數了,若是你再厲害點,之後開發個爬蟲軟件,是否是還要再掌握個類開發工具

第四步是保存數據,是否是得先打開文件,寫數據,最後關閉啊,因此是否是還得掌握文件的讀寫啊!線程

因此,你須要的掌握的最最最基本的Python知識點有

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

線程與進程

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

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

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

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

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

 

1.多線程與多進程

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

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

再來打個比方,假如我要給整個班級的同窗發份資料,我能夠經過微信一個一個地發給他們——單進程+單線程,但這效率實在過低了,特別費時;因而我能夠選擇用微信羣發啊——單進程+多線程,這樣效率一會兒提升了不少,但問題又來了,微信羣發上限是200人,假如我要給400人發文件,是否是就得分兩次羣發呢?爲了節省時間,我還能夠一部分用qq羣發,一部分用微信羣發,這就是多進程+多線程

 

比較

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

分佈性 多核、多機 多核

2.協程

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

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

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

相關文章
相關標籤/搜索