爬蟲基礎

爬蟲基礎

  • HTTP基本原理

    • URI----UniformResource Identifier----統一資源標誌符

      • 統一資源標識符,用來惟一的標識一個資源
        css

      • 例如:https://www.cnblogs.com
    • URL---Universal Resource Locator---統一資源定位符

      • 統一資源定位器,它是一種具體的URI,即URL能夠用來標識一個資源,並且還指明瞭如何locate這個資源
      • 例如:https://www.cnblogs.com/liyihua/
    • Hypertext---超文本

      • 網頁源代碼是一系列 HTML 代碼,裏面包含了一系列標籤,如 img 顯示圖片,p 指定顯示段落等,瀏覽器解析這些標籤後便造成了咱們日常看到的網頁,而這網頁的源代碼HTML 就能夠稱做超文本
    • HTTP和HTTPS(簡單的講:HTTPS是HTTP的安全版

      • http是一種協議,全稱超文本傳輸協議,全部的www文件都必須遵照這個標準
      • https,是以安全爲目的的http通道,簡單講是http的安全版
      • 安全性:http不安全,https安全
      • 加密:http沒法加密,https加密傳輸
      • 證書:http無需證書,https需證書
    • HTTP請求過程

    • HTTPS請求過程

    • 請求

       

      • 請求方法---Request Method

        • 經常使用方法:GET和POST
          • GET :請求頁面,並返回頁面內容
          • POST:大多用於提交表單或上傳文件,數據包含在請求題中
      • 請求的網址---Request URL

        • 請求的網址,即統一資源定位符,用 URL 能夠惟一肯定咱們想請求的資源
      • 請求頭---Request Headers

        • 用來講明服務器要使用的附加信息
      • 請求體---Request Body

        • 請求體通常承載的內容是POST請求中的表單數據,而對於GET請求,請求體則爲空
    • 響應

      • 響應狀態碼---Response Status Code

        • 例如:

          307  臨時重定向  請求的資源臨時從其餘位置響應。
          400  錯誤請求  服務器沒法解析該請求。
          401  未受權  請求沒有進行身份驗證或驗證未經過。
          403  禁止訪問  服務器拒絕此請求。
          404  未找到  服務器找不到請求的網頁。
          405  方法禁用  服務器禁用了請求中指定的方法。
          406  不接受  沒法使用請求的內容響應請求的網頁。
          407  須要代理受權  請求者須要使用代理受權。
          408  請求超時  服務器請求超時。html

      • 響應頭---Response Headers

        • 響應頭包含了服務器對請求的應答信息
      • 響應體---REsponse Body

        • 最重要的當屬響應體內容了,響應的正文數據都是在響應體中
        • 例如:請求一個網頁,它的響應體就是網頁的 HTML 代碼;請求一張圖片,它的響應體就是圖片的二進制數據。
  • 網頁基礎

    • 網頁的組成

      • HTML 定義了網頁的內容和結構, css 描述了網頁的佈局, JavaScript 定義了網頁的行爲 。正則表達式

      1. HTML---Hyper Text Markup Language---定義網頁結構

        • 描述網頁的一種語言,即超文本標記語言。
      2. CSS---CascadingStyle Sheets---層疊樣式表

        • HTML 定義了網頁的結構,可是隻有 HTML 頁面的佈局並不美觀,藉助CSS,頁面會變得更加美觀、優雅數據庫

      3. JS---JavaScript(是一種腳本語言)

        • 是一種動態類型、弱類型、基於原型的語言,內置支持類型
        • HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增長動態功能
    • 網頁的結構

      • <!DOCTYPE html>       # DOCTYPE 定義文檔類型
        <html>                       # html標籤
        <head>                       # 網頁頭:一些頁面的配置和引用
        <meta charset="UTF-8">               # 網頁編碼:UTF-8
        <title>This is a Demo</title>                # 定義網頁標題
        </ head>
        <body>                       # 網頁體:在網頁正文中顯示的內容
        <div id=」container」>               # div標籤:定義網頁中的區塊,它的id是container
        <div class="rapper」〉               # 它的class是wrapper
        <h2 class=」title」>Hello World</h2>               # h2標籤:二級標題
        <p class=」text」>Hell口, this i s a paragraph.</p>               # p標籤:表明一個段落
        </div>
        </div>
        </ body >
        </ html>
      • 代碼保存後,瀏覽器打開該文件。

         

    • 節點樹及節點之間的關係

      • 在HTML中,全部標籤訂義的內容都是節點,它們構成了一個HTML DOM 樹
      • DOM---Document Object Model---文檔對象模型
        • DOM是W3C(萬維網聯盟)的標準
      • HTML DOM 將 HTML 文檔視做樹結構,這種結構被稱爲節點樹瀏覽器

    • 節點樹中的節點彼此擁有層次關係(頂節點稱爲根--root)

      • 父(parent)、子(child)、兄弟(sibling)
      • 節點樹及節點之間的關係
    • 選擇器

      • 網頁是由一個一個的節點組成的,CSS選擇器會根據不一樣的節點設置不一樣的樣式規則。
      • CSS 中,選擇器是一種模式,用於選擇須要添加樣式的元素
      • 例如:
      •  

  • 爬蟲的基本原理

    • 爬蟲概述

      • 一、獲取網頁---獲取網頁的源代碼

      • 二、提取信息:

        • 一、通用方法:正則表達式
        • 二、根據網頁節點的屬性:CSS選擇器、XPath 來提取網頁信息的庫(例如:Beautiful Soup、pyquery、lxml等)
      • 三、保存數據

        • 提取信息後,保存到數據庫,如MySQL和MongoDB等,也能夠保存至遠程服務器,如藉助SFTP進行操做等
      • 自動化程序---爬蟲代替人完成操做

    • JavaScript渲染頁面

      • JavaScript會改變HTML中的節點,向其添加內容,最後獲得完整的頁面
      • 使用urllib或requests等庫請求當前頁面時,獲得的只是這個HTML代碼。可以使用Selenium、Splash這樣的庫來實現模擬JavaScript渲染。
  • 會話(服務端) 和 Cookies(客戶端) --- 保持 HTTP鏈接狀態

     

    • 靜態網頁

      • 網頁的內容是 HTML 代碼編寫的,文字、圖片等內容均經過寫好的 HTML 代碼來指定 , 這種頁面叫做靜態網頁安全

        • 優勢:加載速度快、編寫簡單
        • 缺點:可維護性差 ,不能根據URL靈活多變地顯示內容等
    • 動態網頁:頁面代碼雖然沒有變,可是顯示的內容倒是能夠隨着時間、環境或者數據庫操做的結果而發生改變的。

    • 無狀態HTTP

      • HTTP 的無狀態是指 HTTP 協議對事務處理是沒有記憶能力的,也就是說服務器不知道客戶端是什麼狀態 。服務器

    • 會話

      • 其原本的含義是指善始善終的一系列動做/消息網絡

      • 在 Web 中,會話對象用來存儲特定用戶會話所需的屬性及配置信息app

    • Cookies

      • 某些網站爲了辨別用戶身份 、 進行會話跟蹤而存儲在用戶本地終端上的數據佈局

    • 會話維持---Cookies 和會話須要配合,一個處於客戶端,一個處於服務端,兩者共同協做,實現登陸會話控制

    • 屬性結構

      • Cookie:

        • Name、Value、Domain、MaxAge、Path、Size字段、HTTP 字段、Secure

    • 會話 Cookie和持久 Cookie 

      會話 Cookie就是把 Cookie放在瀏覽器內存裏,瀏覽器在關閉以後該 Cookie 即失效 ; 持久 Cookie則會保存到客戶端的硬盤中,下次還能夠繼續使用,用於長久保持用戶登陸狀態

  • 代理的基本原理

    • 基本原理

      • 代理服務器(proxy server)---實現IP假裝
      • 功能:代理網絡用戶去取得網絡信息---網絡信息的中轉站
      • 在本機和服務器之間搭建一個橋,此時本機不是直接向Web服務器發起請求,而是向代理服務器發出請求
    • 代理的做用

      • 突破自身IP的訪問限制
      • 訪問一些單位或團體的內部資源
      • 提升訪問速度
      • 隱藏真實IP
    • 爬蟲代理

      • 爬蟲爬取速度過快,在爬取過程當中可能遇到同一個 IP訪問過於頻繁的問題,此時網站就會讓咱們輸入驗證碼登陸或者直接封鎖IP。

        使用代理隱藏真實的 IP,讓服務器誤覺得是代理服務器在請求向己。

        在爬取過程當中經過不斷更換代理,就不會被封鎖,可 以達到很好的爬取效果。

    • 代理分類


      • 一、根據協議區分

        • FTP代理服務器、HTTP 代理服務器、SSL廳LS代理、RTSP 代理、Telnet代理、POP3/SMTP 代理、SOCKS 代理

      • 二、根據匿名程度區分

        • 高度匿名代理、普通匿名代理、透明代理、間諜代理

    • 常見的代理設置

      • 使用網上的免費代理、使用付費代理服務、ADSL 撥號

相關文章
相關標籤/搜索