Python 爬蟲是什麼

做爲程序員,相信你們對「爬蟲」這個詞並不陌生,身邊經常會有人提這個詞,在不瞭解它的人眼中,會以爲這個技術很高端很神祕。不用着急,咱們的爬蟲系列就是帶你去揭開它的神祕面紗,探尋它真實的面目。程序員

數據庫

爬蟲是什麼

網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。另一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。瀏覽器

通俗地講,咱們把互聯網比做一張大蜘蛛網,每一個站點資源比做蜘蛛網上的一個結點,爬蟲就像一隻蜘蛛,按照設計好的路線和規則在這張蜘蛛網上找到目標結點,獲取資源。服務器

爲何使用爬蟲

爲何咱們須要使用爬蟲呢?網絡

你們能夠想象一下一個場景:你很是崇拜一個微博名人,對他的微博很是着迷,你想把他十年來微博上的每一句話摘抄下來,製做成名人語錄。這個時候你怎麼辦呢?手動去 Ctrl+C 和 Ctrl+V 嗎?這種方法確實沒錯,數據量小的時候咱們還能夠這樣作,可是數據成千上萬的時候你還要這樣作嗎?ide

咱們再來想象另外一個場景:你要作一個新聞聚合網站,天天須要定時去幾個新聞網站獲取最新的新聞,咱們稱之爲 RSS 訂閱。難道你會定時去各個訂閱網站複製新聞嗎?恐怕我的很難作到這一點吧。學習

上面兩種場景,使用爬蟲技術能夠很輕易地解決問題。因此,咱們能夠看到,爬蟲技術主要能夠幫助咱們作兩類事情:一類是數據獲取需求,主要針對特定規則下的大數據量的信息獲取;另外一類是自動化需求,主要應用在相似信息聚合、搜索等方面。大數據

爬蟲的分類

從爬取對象來看,爬蟲能夠分爲通用爬蟲和聚焦爬蟲兩類。網站

通用網絡爬蟲又稱全網爬蟲(Scalable Web Crawler),爬行對象從一些種子 URL 擴充到整個 Web,主要爲搜索引擎和大型 Web 服務提供商採集數據。這類網絡爬蟲的爬取範圍和數量巨大,對於爬行速度和存儲空間要求較高,對於爬行頁面的順序要求相對較低。例如咱們常見的百度和谷歌搜索。咱們輸入關鍵詞,它們會從全網去找關鍵詞相關的網頁,而且按照必定的順序呈現給咱們。搜索引擎

聚焦網絡爬蟲(Focused Crawler),是指選擇性地爬取那些與預先定義好的主題相關頁面的網絡爬蟲。和通用網絡爬蟲相比,聚焦爬蟲只須要爬取特定的網頁,爬取的廣度會小不少。例如咱們須要爬取東方財富網的基金數據,咱們只須要針對東方財富網的頁面制定規則爬取就行。

通俗地講,通用爬蟲就相似於一隻蜘蛛,須要尋找特定的食物,可是它不知道蜘蛛網的哪一個節點有,因此它只能從一個節點開始尋找,遇到節點就看一下,若是有食物就獲取食物,若是這個節點指示某某節點有食物,那它就順着指示去尋找下個節點。而聚焦網絡爬蟲就是這隻蜘蛛知道哪一個節點有食物,它只須要規劃好路線到達那個節點就能獲取到食物。

瀏覽網頁的過程

在用戶瀏覽網頁的過程當中,咱們可能會看到許多好看的圖片,好比 http://image.baidu.com/ ,咱們會看到幾張圖片以及百度搜索框,相似下面圖片這樣:

baidu_pic_index

這個過程其實就是用戶輸入網址以後,通過DNS服務器,找到服務器主機,向服務器發出一個請求,服務器通過解析以後,發送給用戶的瀏覽器 HTML、JS、CSS 等文件,瀏覽器解析出來,用戶即可以看到形形色色的圖片了。

所以,用戶看到的網頁實質是由 HTML 代碼構成的,爬蟲爬來的即是這些內容,經過分析和過濾這些 HTML 代碼,實現對圖片、文字等資源的獲取。

URL的含義

URL,即統一資源定位符,也就是咱們說的網址,統一資源定位符是對能夠從互聯網上獲得的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每一個文件都有一個惟一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎麼處理它。

URL 的格式由三部分組成:

  • 第一部分是協議(或稱爲服務方式)。
  • 第二部分是存有該資源的主機IP地址(有時也包括端口號)。
  • 第三部分是主機資源的具體地址,如目錄和文件名等。

因爲爬蟲的目標是獲取資源,而資源都存儲在某個主機上,因此爬蟲爬取數據時必需要有一個目標的 URL 才能夠獲取數據,所以,它是爬蟲獲取數據的基本依據,準確理解它的含義對爬蟲學習有很大幫助。

爬蟲的流程

咱們接下來的篇章主要討論聚焦爬蟲,聚焦爬蟲的工做流程以下圖:

spider_flow

  • 首先咱們須要有一個種子 URL 隊列,這個隊列中的 URL 至關於咱們蜘蛛爬行的第一個結點,是咱們在大網中爬行的第一步。
  • 對隊列中的每個 URL 進行請求,咱們會獲得響應內容,一般響應內容爲HTML。若是響應內容裏面有咱們的目標 URL,提取出來加入 URL 隊列中。
  • 解析響應內容,提取咱們須要的數據。
  • 存儲數據,咱們能夠將數據存儲到數據庫、文件等。

從這個爬蟲的流程來看,你們應該可以聯想到學習爬蟲須要學習的關鍵步驟。首先咱們須要像瀏覽器同樣請求某個 URL ,來獲取某個主機的資源,那麼請求的方法和正確地獲取內容就是咱們學習的重點。咱們獲取到資源(也就是請求 URL 以後得到的響應內容)以後,咱們須要對響應的內容進行解析,從而獲取到對咱們有價值的數據,這裏面的解析方法就是學習的重點了。咱們獲取到數據以後,接下來就須要存儲數據了,數據的存儲方法也很重要。

因此咱們學習的爬蟲技術,實際上能夠概括爲請求解析存儲三個基本問題。熟練掌握這三個問題對應的解決方法,爬蟲技術就算是掌握了。你們在學習爬蟲的過程當中,牢牢圍繞這三個問題展開,就不會走彎路了。

總結

本節給你們介紹了爬蟲的基本概念,讓你們對爬蟲有一個大體的瞭解,以便後續章節的學習。開胃菜吃完了

相關文章
相關標籤/搜索