我們很幸運,處於互聯網的時代,大量的信息在網絡上都可以查到。當我們需要去瀏覽數據或文章時,通常采用的方式是復制和粘貼,當數據量大的時候,這自然是一件耗時耗力的事情。我們希望有一個自動化的程序,自動幫助我們匹配到網絡上的數據,下載下來,為我們所用。這時候,網絡爬蟲就應用而生了。
網絡爬蟲(又稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
現在,以我自己的理解,基本概括一下對爬蟲的理解。
什么是爬蟲?
首先,聽我一席話,如聽一席話,這里的爬蟲不是生物學意義上的爬蟲。
爬蟲,一般指的是網絡爬蟲,一種自動化的程序,自動幫我們搜索和匹配有用的程序,下載下來,為我們所用。
爬蟲有什么作用?
獲取我們需要的數據。很多搜索引擎中就大量的使用爬蟲,例如百度搜索、谷歌搜索。爬蟲根據需要,有着不同的分類。
例如,通用的搜索引擎有一定的局限性:
- 不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通過搜索引擎所返回的結果包含大量用戶不關心的網頁。
- 通用搜索引擎的目標是盡可能大的網絡覆蓋率,有限的搜索引擎服務器資源與無限的網絡數據資源之間的矛盾將進一步加深。
- 萬維網數據形式的豐富和網絡技術的不斷發展,圖片、數據庫、音頻、視頻多媒體等不同數據大量出現,通用搜索引擎往往對這些信息含量密集且具有一定結構的數據無能為力,不能很好地發現和獲取。
- 通用搜索引擎大多提供基於關鍵字的檢索,難以支持根據語義信息提出。
因此,有了聚焦爬蟲。它會面向特定的主題和網頁,為面向主題的用戶查詢准備數據資源。
為什么使用Python進行爬蟲?
- Python語言相對其他高級語言簡單易學,因此能夠入選小學教材。
- Python對爬蟲有更完備的基礎庫和框架支持。
- 大多數人都使用Python來開發爬蟲,當然要“合群”。如果自認為不是天才,“合群”,很重要。
- 大多數人使用Python開發。那么就會有比較完善的說明、書籍、教程。
- 遇到問題的時候,更容易搜索到解決的辦法;社區里面提問,其他人的解決度也會更高,是不?
- 使用的人多,相對來說,就更容易投入人力去解決。那么,語言本身也會穩定,先對不容易出現bug。
- 技能用的時候,難免需要和人合作。自然是需要使用通用的東西。例如,我出門在外,不能用福州話和人交流。文化是允許多樣性的,但需要“車同軌、書同文、統一度量衡”來增進彼此的溝通,應用廣大勞動人民的智慧解決更多問題。
爬蟲技術是否需要持續學習?
- 不同網頁的渲染技術不同。例如,有些不是通過Ajax請求得到的,而是通過JavaScript渲染得到的。關於網站的技術會變,那么爬取它的信息的方法自然會變。所以,需要持續。
- 很多網站是反爬蟲的。這就如鎖和開鎖技術一樣,會相互促進技術進步,雙方來說,都是落后就要挨打;一個落后了無法保護財產,另一個落后了無法謀生。所以,需要持續學習。網站為什么發爬蟲?
- 爬蟲短時間內發出大量的請求,影響服務器性能,會影響正常用戶訪問。
- 就如同知識產權一樣,很多企業數據本身也是勞動成果,需要保護。
- 隨着知識量的龐大,量變將會引起質變。如果找到有需要的內容,這個問題的解決方法,一定不會是恆古不變的。