網絡爬蟲學習總結(基于python)

摘要:筆者作為一個網絡爬蟲愛好者,經過一段時間的自學,只能算入門水平。雖然筆者水平一般,但對最近的學習過程,也有了一定的總結。學習網絡爬蟲的好處有很多:可以增加網絡相關知識,提高瀏覽器使用水平,自動獲取網絡資源等。

00 靜態網頁

爬取靜態網頁分為兩步:第一,獲取網頁的HTML文檔,第二,解析HTML文檔。

獲取HTML文檔的方法包含:urllib,urllib2,requestes;其中推薦requestes方法。

解析HTML文檔,推薦BeautifulSoup方法。解析HTML文檔的主要工作就是定位頁面元素,然后獲得這些元素。

01 動態網頁

所謂動態網頁,就是網頁上顯示的內容不全部包含在當前HTML文檔中,這樣使用上文靜態網頁爬取方法則可能無法獲取想要的信息。

爬取動態網頁的方法有:Selenium,Pyppeneer,PhantomJS,Mechanize等;筆者學習的是Selenium,該方法模擬用戶驅動瀏覽器,等需要的內容在瀏覽器中都加載完成,再爬取所需信息。學習Selenium方法的重點之一也是頁面元素定位,包含各種定位方式。

02 爬蟲框架

為了提高爬蟲編寫效率,存在很多爬蟲框架,爬蟲框架的主要作用就是寫盡量少的代碼,完成盡量多的工作。提高爬蟲程序編寫的效率。

網絡爬蟲學習總結(基于python)的圖1

03 數據庫

爬取到數據后需要存放,必然會使用到數據庫。比如SQL數據庫,比如MySQL,PostgreSQL等;也能使用NoSQL,比如MongoDB。

04 反爬蟲

如果每個網站都沒有反爬蟲,那爬取網絡資源真的太簡單了。然而現實是,網站并不希望程序來自動訪問服務器。所以各種反爬技術無疑提高了爬取信息的難度,提高了網絡爬蟲的門檻。可以說,網絡爬蟲的基本方法很簡單,學習怎么應付反爬蟲才是爬蟲水平的彰顯。

05 高效率

如果我們只是爬取100,1000個網頁,那談不上爬蟲運行效率問題。但如果我們需要爬取百萬個網頁。這就要學習分布式爬蟲,多線程,多進程等概念了。這些技術主要為海量爬蟲任務服務。

結語:最大的網絡爬蟲是:搜索引擎!

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP