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

做者 :榮仔!最靚的仔!
專欄地址
http://suo.im/5Rh1z1html

1 網絡爬蟲

1.1 背景引入

隨着互聯網的迅速發展,萬維網已成爲大量信息的載體,愈來愈多的網民能夠經過互聯網搜索引擎獲取所須要的信息。web

事實上,市面上通用的搜索引擎是存在必定侷限性的:正則表達式

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

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

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數據爬取的知識海洋吧!

未完,待續......

若是你以爲本文寫得好,能夠掃描下方二維碼,關注做者的CSDN博客,更多精彩文章搶先看。

     

關注微信公衆號『數據分析與統計學之美』,添加做者微信號,拉你入羣哦,氣氛槓槓的!看到這裏,麻煩您點個再看,讓更多朋友看到哦!

本文分享自微信公衆號 - 數據分析與統計學之美(gh_21c25c7e71d0)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索