python學習之爬蟲理論總結

通用爬蟲和聚焦爬蟲

根據使用場景,網絡爬蟲可分爲 通用爬蟲 和 聚焦爬蟲 兩種.
通用網絡爬蟲 是 捜索引擎抓取系統(Baidu、Google、Yahoo等)的重要組成部分。主要目的
是將互聯網上的網 頁下載到本地,造成一個互聯網內容的鏡像備份。
通用網絡爬蟲 從互聯網中搜集網頁,採集信息,這些網頁信息用於爲搜索引擎創建索
引從而提供支持,它決定着 整個引擎系統的內容是否豐富,信息是否即時,所以其性
能的優劣直接影響着搜索引擎的效果
python學習之爬蟲理論總結
搜索引擎如何獲取一個新網站的URL:html

  1. 新網站向搜索引擎主動提交網址:
  2. 在其餘網站上設置新網站外鏈
  3. 和DNS解析服務商(如DNSPod等)合做,新網站域名將被迅速抓取。

    爬蟲限制

    搜索引擎蜘蛛的爬行是被輸入了必定的規則的,它須要聽從
    一些命令或文件的內容。python

  4. rel="nofollow",,告訴搜索引擎爬蟲無需抓
    取目標頁,同時告訴搜索引擎無需將的當前頁的Pagerank
    傳遞到目標頁.
  5. Robots協議(也叫爬蟲協議、機器人協議等),
    全稱是「網絡爬蟲排除標準」(Robots Exclusion
    Protocol),網站經過Robots協議告訴搜索引擎哪些頁面可
    以抓取,哪些頁面不能抓取。

侷限性

1.大多狀況下,網頁裏90%的內容對用戶來講都是無用的。正則表達式

  1. 搜索引擎沒法提供針對具體某個用戶的搜索結果。
  2. 圖片、數據庫、音頻、視頻多媒體等不能很好地發現和獲取。
  3. 基於關鍵字的檢索,難以支持根據語義信息提出的查詢,沒法準確理解用戶的具體需求

聚焦爬蟲

聚焦爬蟲,是"面向特定主題需求"的一種網絡爬蟲程序,它與通用搜索引擎爬蟲的區別在
於:聚焦爬蟲在實施網頁 抓取時會對內容進行處理篩選,儘可能保證只抓取與需求相關的
網頁信息。
要學習的,就是聚焦爬蟲。數據庫

HTTP和HTTPS

• HTTP協議-80端口
HyperTextTransferProtocol ,
超文本傳輸協議是一種發佈和接收HTML頁面的方法。
• HTTPS-443端口
HypertextTransferProtocoloverSecureSocketLayer ,
簡單講是HTTP的安全版,在HTTP下加入SSL 層。
HTTP工做原理
網絡爬蟲抓取過程能夠理解爲模擬瀏覽器操做的過程。
python學習之爬蟲理論總結瀏覽器

瀏覽器發送HTTP請求的過程
1.當用戶在瀏覽器的地址欄中輸入一個URL並按回車鍵以後,瀏覽器會向HTTP服務
器發送HTTP請求。HTTP請求主要分爲「Get」和「Post」兩種方法。緩存

  1. 當咱們在瀏覽器輸入URLhttp://www.baidu.com的時候,瀏覽器發送一個
    Request請求去獲取http://www.baidu.com的html文件,服務器把Response文
    件對象發送回給瀏覽器。
    3.瀏覽器分析Response中的HTML,發現其中引用了不少其餘文件,好比Images
    文件,CSS文件,JS文件。瀏覽器會自動再次發送Request去獲取圖片,CSS文件,
    或者JS文件。
  2. 當全部的文件都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。

URL
URL(Uniform/UniversalResourceLocator的縮寫):統一資源定位符,是用於完
整地描述Internet上網頁和其餘資源的地址的一種標識方法。
基本格式: scheme://host[:port#]/path/.../[?query-string][#anchor]
• query-string:參數,發送給http服務器的數據
• anchor:錨(跳轉到網頁的指定錨點位置)安全

客戶端HTTP請求

客戶端發送一個HTTP請求到服務器的請求消息,包括如下格式:
python學習之爬蟲理論總結
請求方法Method
根據HTTP標準,HTTP請求可使用多種請求方法.
HTTP0.9:只有基本的文本GET功能。
HTTP1.0:完善的請求/響應模型,並將協議補充完整,定義了三種請求方法:GET,POST和HEAD方法。
HTTP1.1:在1.0基礎上進行更新,新增了五種請求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
python學習之爬蟲理論總結服務器

Get 和 Post 詳解網絡

  1. GET是從服務器上獲取數據,POST是向服務器傳送數據
  2. GET請求參數顯示,都顯示在瀏覽器網址上,即「Get」請求的參數是URL的一部分。
  3. POST請求參數在請求體當中,消息長度沒有限制並且以隱式的方式進行發送,一般用來向
    HTTP服務器提交量比較大的數據(好比請求中包含許多參數或者文件上傳操做等),請求的參數
    包含在「Content-Type」消息頭裏,指明該消息體的媒體類型和編碼,
    經常使用的請求報頭
    Host: 主機和端口號
    Connection : 客戶端與服務鏈接類型, 默認爲keep-alive
    User-Agent: 客戶瀏覽器的名稱
    Accept: 瀏覽器或其餘客戶端能夠接受的MIME文件類型
    python學習之爬蟲理論總結
    經常使用的請求報頭
    Referer:代表產生請求的網頁來自於哪一個URL
    Accept-Encoding:指出瀏覽器能夠接受的編碼方式。
    Accept-Language:語言種類
    Accept-Charset: 字符編碼
    python學習之爬蟲理論總結
    經常使用的請求報頭
    Cookie:瀏覽器用這個屬性向服務器發送Cookie
    Content-Type:POST請求裏用來表示的內容類型。

    HTTP響應

    HTTP響應由四個部分組成,分別是: 狀態行 、 消息報頭 、 空行 、 響應正文
    python學習之爬蟲理論總結python爬蟲

    響應狀態碼

    python學習之爬蟲理論總結
    200: 請求成功
    302: 請求頁面臨時轉移至新url
    307和304: 使用緩存資源
    404: 服務器沒法找到請求頁面
    403: 服務器拒絕訪問,權限不夠
    500: 服務器遇到不可預知的狀況

    Cookie和Session

    服務器和客戶端的交互僅限於請求/響應過程,結束以後便斷開,在下一次請求時,服
    務器會認爲新的客戶端。爲了維護他們之間的連接,讓服務器知道這是前一個用戶發送
    的請求,必須在一個地方保存客戶端的信息。

    Cookie:經過在客戶端記錄的信
    息肯定用戶的身份。

    Session:經過在服務器端記錄
    的信息肯定用戶的身份。

    圖片下載器

    製做爬蟲的基本步驟

  4. 需求分析:
    http://image.baidu.com/search/index?tn=baiduimage&word=cat
  5. 分析網頁源代碼,配合F12
  6. 編寫正則表達式或者其餘解析器代碼
  7. 存儲數據到本地
  8. 正式編寫python爬蟲代碼
    "我想要圖片,我又不想上網搜「
    "最好還能自動下載"
    ......
    這就是需求,至少要實現兩個功能,一是搜索圖片,二是自動下載。

分析網頁
python學習之爬蟲理論總結
python學習之爬蟲理論總結
pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
編寫爬蟲代碼
python學習之爬蟲理論總結

相關文章
相關標籤/搜索