爬蟲系列教程零:怎麼學習爬蟲

我接觸爬蟲已經快兩年了,但是一直沒有寫下一個系統的爬蟲的筆記,最近在上web搜索的課程,又一次用到了爬蟲,所以寫下這系列文章。我寫這個系列的目的主要是鞏固自己的知識,梳理知識的體系,所以思路上的內容比較多,有時間也會補一些代碼進行說明或者分享一些我做過的爬蟲的內容。

如果是想要入門爬蟲,我強烈推薦崔慶才的視頻:我當時爬蟲入門比較痛苦,因爲網上的資料比較多,需要仔細的去搜索各個模塊的知識,纔能有一個宏觀的認識,最後很幸運的看到了崔慶才的爬蟲系列,非常系統,也非常細緻,而且有視頻教程,可以說是我看到的目前爲止最適合小白入門的教程了。非常推薦大家去看他的教程。

最後我說一下我目前對爬蟲的理解:

  1. 爬蟲是什麼?通過模擬用戶的行爲,來達到對網站的數據的獲取或者在網站上完成某種特定的任務;需要對計算機網絡,操作系統有一定的理解,才能寫出高性能的爬蟲。
  2. 我們可以用爬蟲來幹什麼?做搜索引擎;或者爬取一些網站的信息,如淘寶、豆瓣、微博;完成搶票、搶月餅等任務。
  3. 爬蟲的學習內容有哪些?用於寫爬蟲的語言有很多,如C++,java,python,可以根據所需要的業務的耗時與性能要求決定寫爬蟲的語言,本文采用python;雖然語言不同,但是需要的基本技能是相似的:
    • 首先是學習當前語言下的網絡連接工具的用法,比如python裏面的requests庫;
    • 然後是爬蟲編寫思路的學習,主要是從網頁動態和靜態入手,這一部分着重能爬下來大部分網站就可以;
      接着需要學習爬蟲與反爬的較量,上一步的動態網頁就是一種很好的反爬措施,但是現實中還有更多的反爬措施,比如:設置驗證碼,封禁ip,利用反向代理封禁真實ip,強制用戶登錄,設置爬蟲陷阱,返回內容不規則,檢測用戶行爲規律等;當然用戶也有很多反反爬的措施:cookie池,IP池,驗證碼衆包網站,神經網絡識別驗證碼,做好異常處理;這一步的內容就比較豐富,需要用戶和網站鬥智鬥勇,尤其是一些大型的網站,往往在這一步設置了很多的難題,如果學會這一步,會大大擴充可以爬取的網站;這一步着重解決能不能的問題;
    • 不管要解決能爬,還要解決爬的好,學習如何能讓爬蟲效率提高,充分利用資源,於是併發的分佈式的爬取也是我們需要重點掌握的。這一步就要學習分佈式,進程、線程、協程這些概念,開始接觸框架,做到爬蟲中斷後自動重啓,斷點續爬,魯棒性等要求,學會連接數據庫,做到可視化;這個部分就是解決爬的好的問題。
    • 最後要解決爬蟲在大規模下的爬取問題,可能需要突破一些地方的性能瓶頸,網絡IO,讀寫IO,對方的服務器的壓力等,但是我沒有接觸過這種情況下的爬蟲,就不多說了。
  4. 特別特別需要注意的一點是,爬蟲可能違反法律,所以要時刻注意當前的行爲是否在法律允許的範圍之內。

話不多說,馬上就開始填坑之旅~

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