python學習之爬蟲理論總結

通用爬蟲和聚焦爬蟲

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

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

    爬蟲限制

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

  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學習之爬蟲理論總結
    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學習之爬蟲理論總結

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