1. 程式人生 > >python與爬蟲技術總結

python與爬蟲技術總結

做Python爬蟲已經有一小段時間了,從去年12月的兩天公司培訓與專案安排到畢業設計的實現,再到轉正後的專案,到現在我有過幾次python爬蟲抓取經歷,對python與爬蟲有了一個初步的瞭解,特此拿出來與大家分享。 講真,剛剛接觸Python時候第一直覺覺得它是一個要多不靠譜有多不靠譜,要多業餘有多業餘的語言。變數的定義完全不需要指定型別,不同型別的變數說覆蓋就覆蓋,print功能不需要括號,但是在字元縮排方面要求又額外嚴格。希望減少編碼行數,但是使得到媽的可讀性大幅降低。不會有可執行檔案,程式碼完全透明,程式碼的安全性極低。一系列的問題讓我對這門語言有極低的評價。 隨著不斷的學習使用,漸漸的接受了python的編碼方式,python簡單的語法的確帶來的極大的便利。我們們不需要去糾結變數的型別問題,瞭解了python的基本4大元件之後就可以開始我們自己的程式設計之路。特殊的語法規則大大的減少了程式碼的數量,嚴格的縮排要求使得程式碼的格式更加統一,交接更加便捷。針對於輕量級的任務而言,程式碼透明影響不大,網路上提供了大量的開源包,使得程式設計者的工作量驟減。 網路爬蟲是我們大量獲取網路資料的主要手段。針對於爬蟲而言,python提供了大量的網路請求工具,我們可以通過對應的工具快速實現網路爬蟲。 我使用的python版本是python2.7。儘管python3正在逐漸的取代2.7版本,但是現在業內使用最多的依舊是2.7版本。一個優秀的爬蟲應當具備以下幾個特點: 1.友好性:長期以來,爬蟲工作者與網站開發者之間存在著無硝煙的戰爭,很多爬蟲開發者不會去考慮網站的訪問壓力,短時間內向伺服器傳送大量的請求(我之前基本也是這麼幹的,直到我的IP被國內著名電商平臺”某寶“網站封掉。。。。),被伺服器視為惡意訪問,從而導致一些列的後果。爬蟲方式的更新與反爬蟲機制的改進成了爬蟲工作者與網站維護人員的主要工作。爬蟲的抓取效率與伺服器的壓力之間存在著矛盾,我們在日常開發中往往只會顧慮到我們自己的需求,而忽視了網站,甚至對網站造成一些惡劣影響。爬蟲開發者應當充分考慮網站伺服器的壓力,有好的去反問網站。 2.高效能:每秒鐘能夠抓取的網頁數量是衡量爬蟲效能的重要指標。這也是爬蟲開發者需要好好考慮的一個問題。如和在保證友好性的同時儘可能的提高自身的效率,還需集體問題具體分析。 3.擴充套件性:爬蟲需要抓取的網頁數最巨大,即使單個爬蟲的效能很高,要將所有網頁都下載到本地,仍然需要相當長的時間週期,為了能夠儘可能縮短抓取週期,爬蟲系統應該有很好的可擴充套件性,即很容易通過增加抓取伺服器和爬蟲數量來達到此目的。
除此之外,一段時間的開發也讓我漸漸看到了爬蟲的一些侷限性。 1.訪問侷限性。如果我們想訪問某個網站,首先我們要獲取網站的連線。如果我們要抓取的資料我們無法訪問到其中的內容,或者是無法從一個頁面轉到下一個頁面(也就是下載規則不明確),做不到連續下載,爬蟲對於解決該問題的意義不大。 2.針對性:爬蟲是有很強的針對性的。爬蟲下載網頁我們可以很容易的抽象出統一的模板,對於網站的解析而言,卻很難有統一的格式。解析操作是在我們下載的網頁中提取我們需要的內容,網站的設計不同,提取的內容不同,相關的操作也存在著很大的差異。 3.時效性:作為一個網路爬蟲開發者,我們應該隨時關注我們正在爬取的網站的更新動態,一旦網頁的結構發生了變化,我們的解析規則可能也需要變化,及時更新爬蟲的解析規則,以確保爬蟲的正常執行。
相關工具推薦: 網頁下載request、urllib2 網站解析:正則表示式、xpath、bs4