「Python爬蟲系列講解」一、網絡數據爬取概述

本專欄是以楊秀璋老師爬蟲著作《Python網絡數據爬取及分析「從入門到精通」》爲主線、個人學習理解爲主要內容,以學習筆記形式編寫的。
本專欄不光是自己的一個學習分享,也希望能給您普及一些關於爬蟲的相關知識以及提供一些微不足道的爬蟲思路。
專欄地址:Python網絡數據爬取及分析「從入門到精通」

在這裏插入圖片描述

1 網絡爬蟲

1.1 背景引入

隨着互聯網的迅速發展,萬維網已成爲大量信息的載體,越來越多的網民可以通過互聯網搜索引擎獲取所需要的信息。

事實上,市面上通用的搜索引擎是存在一定侷限性的:

  • 搜索引擎返回的結果包含大量用戶不關心的網頁
  • 基於關鍵字的搜索引擎缺乏語義理解,導致反饋信息不準確
  • 無法處理非結構性數據,尤其是圖片。音視頻等複雜類型的數據

那麼如何有效地提取並利用這些寫從互聯網上獲取的信息呢?面對這一巨大的挑戰,定向爬去相關網頁資源的網絡爬蟲應運而生。

1.2 概括介紹

網絡爬蟲又被稱爲網頁植株或網絡機器人,它是一種按照一定的規則,自動爬取萬維網信息的程序或者腳本。

網絡爬蟲根據既定的爬取目標,有選擇的訪問萬維網上的網頁與相關鏈接,獲取所需要的信息;
根據使用場景,網絡爬蟲可分爲通用網絡爬蟲定向網絡爬蟲

  • 通用網絡爬蟲是搜索引擎爬取系統的重要組成部分,它將互聯網上的網頁信息下載至本地,形成一個互聯網內容鏡像備份庫,從而支撐整個搜索引擎,其覆蓋面廣,數據豐富,比如百度,Google等。
  • 定向網絡爬蟲並不追求大的覆蓋,是面向特定主題的一種網絡爬蟲,其目標是爬取與某一特定主題相關的網頁,爲面向主題的用戶查詢準備數據資源,同時定向爬蟲在實施網頁爬去時,會對內容進行處理篩選,從而保證爬取的信息與主題相關。

網絡爬蟲按照系統結構和實現技術分類:

  • 通用網絡爬蟲(General Purpose Web Crawler)
  • 聚焦網絡爬蟲(Focused Web Crawler)
  • 增量式網絡爬蟲(Incremental Web Crawler)
  • 深層網絡爬蟲(Deep Web Crawler)

實際的網絡爬蟲通常是由幾種爬蟲技術相結合實現的。

網絡數據分析通常包括前期準備數據爬取數據預處理數據分析可視化繪圖分析評估6個步驟。

其中,數據爬取又主要分爲以下四個步驟:

  • 需求分析:首先需要分析網絡數據爬取的需求,然後瞭解所爬取主題的網址、內容分佈,所獲取語料的字段、圖集等內容。
  • 技術選擇:網頁爬取及數可通過Python、Java、C++、C#等不同的編程語言實現,主要涉及的技術包括urllib庫、正則表達式、Selenium、BeautifulSoup、Scrapy等技術。
  • 網頁爬取:確定好爬取技術後,需要分析網頁的DOM樹結構,通過XPath技術定位網頁所爬取內容的節點,再爬取數據;同時,部分網站涉及頁面跳轉、登錄驗證等。
  • 存儲技術:該技術主要是存儲爬取的數據信息,這些數據信息主要包括SQL數據庫、純文本格式的文件、CSV/XLS文件等。

在這裏插入圖片描述

2 相關技術

2.1 HTTP

HTTP即超文本傳輸協議的英文縮寫,其英文全稱是Hypertext Transfer Protocol。
它是互聯網上應用最爲廣泛的一種網絡協議,主要用於服務器與客戶機之間傳輸超文本文件。
所有的WWW文件都必須遵守這個協議。
HTTP是一個客戶端和服務器端請求和應答的標準,其中,客戶端是終端用戶,服務器端是網站。通過使用Web瀏覽器、網絡爬蟲或者其他工具,客戶端發起一個到服務器制定端口(默認端口爲80)的HTTP請求。

在這裏插入圖片描述

上圖所示的是HTTP協議的原理圖,通常包括兩部分:

  • HTTP客戶端發起一個請求,建立一個到服務器指定端口的TCP連接;
  • HTTP服務器則在該指定端口監聽客戶端發送過來的請求。一旦收到請求,服務器就向客戶端發回一個狀態行,比如成功訪問狀態碼爲“HTTP/1.1 200 OK”,同時返回響應消息,包括請求文件,錯誤消息或者其他一些信息。

2.2 HTML

HTML即超文本標記語言的英文縮寫,其英文全稱是Hypertext Markup Language。
它是用來創建超文本的語言,用HTML創建超文本文檔稱爲HTML文檔,它能獨立於各種操作系統平臺。
由於“HTML標籤”的便捷性和實用性,HTML語言也就被廣大用戶和使用者認可,並被當做萬維網信息的表示語言。
使用HTML語言描述的文件需要通過Web瀏覽器顯示效果。
最新的HTML版本爲HTML5,它擁有強大的靈活性,能編寫更爲高端的動態網頁。
在這裏插入圖片描述
上圖使用Python代碼簡單寫的一個登錄網頁及瀏覽器顯示結果。

事實上,HTML文檔的源碼包含大量的“<…>”和“</…>”,我們稱之爲標記(Tag)。標記用於分割和區分內容的不同部分,並告知瀏覽器它處理的是什麼類型的內容。
大多數HTML標記的名字都能準確地描述其用途以及所標註內容的類型,比如:
在這裏插入圖片描述
下面給出的是通常的網頁格式

<!DOCTYPE html>
<html name="整體">
  <head name="頭部">
  <title name="眼睛">標題</title>
  </head>
  <body name="身體">內容</body>
</html>

HTML的標記包含在一對尖括號(<>)之間,以便與普通文本明確區分開。
第一個點括號(<)表明標籤的開頭,隨後是特定標籤名(如img),最後是反向尖括號(>)表示結束。

:由於Python網絡爬蟲需要分析網頁的HTML源碼其樹形結構,所以在編寫爬蟲之前必須掌握HTML基礎知識。

2.3 Python

Python是荷蘭人Guido van Rossum在1989年開發的一種腳本新解釋語言,是一種面向對象的解釋型計算機程序設計語言。
Python是純粹的自由軟件,其語法簡潔清晰,特色之一是強制使用空白符(White Space)作爲語句縮進。
由於Python具有豐富而強大的第三方庫,所以常被暱稱爲“膠水語言”,它能夠把用其他語言製作各種模塊(尤其是C/C++)很輕鬆的聯合在一起。
Python作爲一門語法清晰,易於學習功能,強大的編程語言,既可以作爲面嚮對象語言應用於各領域,也可以作爲腳本編程語言處理特定的功能,並且Python語言含有高效率的數據結構,與其他的面向對象編程語言一樣,具有參數、列表、函數、流程控制、類、對象、正則表達式等功能。
在這裏插入圖片描述
因此,Python憑藉其諸多優點,進而成爲一種能在多種功能,多種平臺上撰寫腳本及快速開發的理想語言。

3 本文總結

由於Python具有語法清晰簡單、易學短小、精煉高效開發、擁有數量龐大的第三方庫和活躍的開發社區等特點,越來越被廣大的開發人員和編程愛好者所選擇,同時,隨着網絡數據爬取的火熱,Python提供了更加豐富的第三方庫,如urllib、BeautifulSoup、Selenium、Scrapy等。
接下來就跟着博主一起走進Python數據爬取的知識海洋吧!

歡迎留言,一起學習交流~

感謝閱讀

END

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