精通Python爬蟲-01-不斷前行的蜘蛛

精通Python爬蟲-01-不斷前行的蜘蛛

來自專欄猿論

精通Python爬蟲-01-不斷前行的蜘蛛

聲明:

本系列文章原創於慕課網,作者秋名山車神,任何人不得以任何形式在不經作者允許的情況下,進行任何形式的印刷以及銷售,轉載需註明出處及此聲明。

本系列文章更新至少每周一更,將涉及Python爬蟲基礎,Requests,Scrapy等主流爬蟲技術。同時會介紹圖片驗證碼,語音驗證碼的識別以及我自己設計的一個高並發可擴展易維護的集群爬蟲架構。

對文章有任何問題請在下面留言,我會不定期的回復大家。

人非聖賢,如果文章有錯別字請大家自行區分或指正出來,我將不定期修改錯誤的地方。

本系列能否持久更新下去離不開大家的支持與鼓勵,以及對原創版權的尊重。

爬蟲的定義

爬蟲就是通過模擬人類使用瀏覽器來訪問網頁的過程,通過一個起始URL地址不斷的從請求到的HTML中尋找新的URL地址,如此循環下去,直到我們的目的達成。

什麼是URL和HTML

URL

URL(Uniform Resource Locator)又叫統一資源定位符。通俗的講,每一個URL都代表一個資源,而這個資源是存儲在不同的計算機上,我們使用固定的協議,主機名,埠號,對應的路徑以及文件名這樣的格式。就可以通過瀏覽器來訪問到存放在某一個主機上面的資源。

如:http://www.imooc.com:80/static/img/index/logo-newyear.gif 這就是一個URL地址,它所代表的的含義就是,使用http協議來訪問www.imooc.com這個主機,和這個主機的80埠進行通信,找到static目錄下的img目錄下的index目錄下的logo-newyear.gif資源。這個URL就代表了唯一的一個資源,無論是我還是你來訪問,請求到的都是這一個資源。所以叫做,統一資源定位符。

HTML

HTML(HyperText Markup Language)又叫做超文本標記語言。文本我們都知道,我們最簡單的TXT文檔,就是一個文本,那麼什麼是超文本呢?我們可不可以理解為是一種比文本更加強大的東西?因為我們的TXT文檔連最基本的針對某個字元進行加粗或者插入一個圖片都做不到,所以我們需要一種更加強大的文本,那就是超文本。

所以HTML不僅僅可以包含文字,還可以包含程序,視頻,音頻,圖片,鏈接,等等。它具有一種獨特的書寫格式,簡單易學,並且體積較小,容易閱讀,可以在互聯網進行低帶寬傳輸,並且能夠很好的被其他程序解析,比如我們的瀏覽器。有些人看到前面可能會問:Word文檔也可以包含視頻音樂和圖片啊,為什麼Word不叫超文本呢?這個問題非常好,因為Word文檔設計本身就不是讓它在互聯網進行傳輸的,我們都知道互聯網傳輸什麼最重要?那就是速度,Word文檔不僅體積大,而且它的編碼還不是採用的字元的編碼形式,而是採用微軟特有的形式進行編碼,我們需要依靠特定的軟體,比如Office才能編輯這種文檔。而不像我們的HTML,他可以使用最原始的文本文檔進行編輯,它在傳輸的時候就是最簡單的字元,可以被任何其他程序輕易的讀取。

當我們在使用瀏覽器訪問一個HTML文件的時候,伺服器就會把這個文件中包含的字元傳輸給我們的瀏覽器,瀏覽器獲取到這個文件以後會把裡面包含的視頻,圖片,樣式,音頻等等統統請求過來,然後根據裡面當初大家規定好的代碼標籤來將頁面漂亮的顯示出來,而不是一個原始的代碼文本。

如下圖,這是慕課網首頁經過瀏覽器渲染後的樣子:

我們再來看一下沒有經過渲染的樣子:

是不是非常的難看,雖然有前端基礎的同學能夠看出他們代表的意思,但是你能夠在腦海中想像出這麼漂亮的一個頁面嗎?恐怕非常困難吧,而我們的瀏覽器並沒有修改任何的東西,只是把當初定義HTML語言時候規定的樣式給展現了出來。那麼也就是說,這其實是瀏覽器搞的鬼,實際上伺服器返回的還是上面的沒有渲染過的代碼。

那麼既然瀏覽器是一個程序,它能夠發送請求來獲取一個URL地址對應的資源,我們能不能夠也寫一個類似的程序,但是我們不需要去渲染漂亮的頁面,我們只需要從HTML代碼中獲取一些我們感興趣的東西就可以了。於是,爬蟲技術應運而生。

不斷前行的蜘蛛

任何事情它一開始出現的目的,一定是為了解決某些問題的,爬蟲也不例外。在互聯網開始之初,人們建立了許多的網站,我們都知道伺服器其實就是一個計算機而已,它也擁有IP地址。我們訪問一台伺服器的時候,其實訪問的就是它的IP地址,但是IP地址並不好記啊,所以人們發明了域名,域名就很好記了。比如說:imooc.combaidu.comqq.com。但是隨之而來的問題就出現了,這麼多的網站,我不可能每個域名都記住啊,你讓我記住十幾個,甚至是天賦過人,記住幾百個,但是其他更多的域名怎麼辦呢。如果我想找到一個音樂網站,我該怎麼找呢。

這時,就有人想,能不能做一個程序,我讓它把世界上所有的網站都找到,然後大家都在自己網站的HTML代碼里加入一個特殊的標記,如果你這個網站主要是音樂,你就在裡面寫上音樂還有其他跟音樂相關的關鍵詞,我的程序就通過分析你們這些頁面里包含的東西還有你們的域名存儲在我的伺服器里,而我來建一個網站。這個網站什麼都沒有,只有一個搜索框,別人想找一個音樂網站就在框里輸入音樂兩個字,點搜索我就把你的域名給別人顯示出來,這樣所有人都只用記住我的網站域名就可以了,其他的根本不用記。

到這裡,可能很多人都明白了,這就是我們的搜索引擎。沒錯,爬蟲的最初目的竟然是為了解決人們記不住互聯網上眾多的域名而誕生的。但是隨著大數據和人工智慧時代的到來,數據顯得越來越重要,谷歌,百度,騰訊,憑什麼他們能夠屹立在互聯網行業的最巔峰?那就是因為他們掌握的數據量太恐怖了,百度谷歌每天通過人們搜索的關鍵詞就可以判斷出全世界的一個趨勢,他們知道人們對什麼感興趣。包括騰訊,龐大的用戶群體,空間,等等。通過人物之間的關係,以及各種動態就可以分析出某些群體他們感興趣的產品。

21世紀什麼最重要?產品。我們來看滴滴打車等軟體就可以知道,一個好的產品可以讓一個普通人身價過億。那麼如何做好一個產品,自然是龐大的數據分析。根據不完全統計,各大招聘網站中數據挖掘工程師的工資不斷的飆升,並且穩居IT行業前列。並且在2016年出現了震驚世界的一件事,那就是國際圍棋大師,李世石大戰谷歌人工智慧阿爾法狗,最終敗給了阿爾法狗。

這件事再次讓人們重新思考人工智慧是否可行,但是無論怎樣,人工智慧技術絕對離不開龐大的數據量,那麼這些數據如何獲取,就完全依靠我們的爬蟲程序。越來越多的人投身這個行業,越來越多的爬蟲進入了這個龐大的互聯網,它們目的明確,不斷的順著網路尋找下一個目標,像一個不知疲倦的蜘蛛,永遠前行。

作者: 秋名山車神

鏈接:imooc.com/article/16020

來源:慕課網

本文原創發佈於慕課網 ,轉載請註明出處,謝謝合作


推薦閱讀:

打造個人品牌 so easy !_慕課手記

Python新手寫出漂亮的爬蟲代碼1——從html獲取信息

程序員搞笑動圖:告訴你真正的人工智慧是什麼!

精通Python爬蟲-02-初遇

精通Python爬蟲-03-狩獵大師


推薦閱讀:

TAG:Python | 爬蟲計算機網路 | 科技 |