第一講html
什麼是爬蟲web
網絡蜘蛛(Web spider)也叫網絡爬蟲(Web crawler),螞蟻(ant),自動檢索工具(automatic indexer),或者(在FOAF軟件概念中)網絡疾走(WEB scutter),是一種「自動化瀏覽網絡」的程序,或者說是一種網絡機器人。它們被普遍用於互聯網搜索引擎或其餘相似網站,以獲取或更新這些網站的內容和檢索方式。它們能夠自動採集全部其可以訪問到的頁面內容,以供搜索引擎作進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們須要的信息。瀏覽器
總結:自動抓取數據緩存
爬蟲能作什麼安全
爬蟲的本質是什麼服務器
模仿瀏覽器打開網頁cookie
第二講:HTTP協議網絡
什麼是HTTP協議app
超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是互聯網上應用最爲普遍的一種網絡協議。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面的方法。經過HTTP或者HTTPS協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識。 HTTP的發展是由蒂姆·伯納斯-李於1989年在歐洲核子研究組織(CERN)所發起。由萬維網協會(World Wide Web Consortium,W3C)和互聯網工程任務組(Internet Engineering Task Force,IETF)制定標準,最終發佈了一系列的RFC,其中最著名的是1999年6月公佈的 RFC 2616,定義了HTTP協議中現今普遍使用的一個版本——HTTP 1.1。 2014年12月,互聯網工程任務組(IETF)的Hypertext Transfer Protocol Bis(httpbis)工做小組將HTTP/2標準提議遞交至IESG進行討論[1],於2015年2月17日被批准。[2] HTTP/2標準於2015年5月以RFC 7540正式發表,替換HTTP 1.1成爲HTTP的實現標準。[3]ide
HTTP是一個客戶端終端(用戶)和服務器端(網站)請求和應答的標準(TCP)。經過使用網頁瀏覽器、網絡爬蟲或者其它的工具,客戶端發起一個HTTP請求到服務器上指定端口(默認端口爲80)。咱們稱這個客戶端爲用戶代理程序(user agent)。應答的服務器上存儲着一些資源,好比HTML文件和圖像。咱們稱這個應答服務器爲源服務器(origin server)。在用戶代理和源服務器中間可能存在多個「中間層」,好比代理服務器、網關或者隧道(tunnel)。 儘管TCP/IP協議是互聯網上最流行的應用,HTTP協議中,並無規定必須使用它或它支持的層。事實上,HTTP能夠在任何互聯網協議上,或其餘網絡上實現。HTTP假定其下層協議提供可靠的傳輸。所以,任何可以提供這種保證的協議均可以被其使用。所以也就是其在TCP/IP協議族使用TCP做爲其傳輸層。 一般,由HTTP客戶端發起一個請求,建立一個到服務器指定端口(默認是80端口)的TCP鏈接。HTTP服務器則在那個端口監聽客戶端的請求。一旦收到請求,服務器會向客戶端返回一個狀態,好比"HTTP/1.1 200 OK",以及返回的內容,如請求的文件、錯誤消息、或者其它信息。
具體例子
打開知乎頁面,按瀏覽器的F12鍵,點擊network,點擊doc,而後刷新頁面,再點擊headers,能夠看到以下界面:
其中:
HTTP協議中的統一資源定位符也就是咱們打開的網址
Request URL:https://zhuanlan.zhihu.com/p/25296437 (爬蟲會用到)
HTTP協議中的請求方法,咱們此次用的是GET
Request Method:GET #(爬蟲會用到)
請求方法有如下這些,經常使用的是GET,POST
對應HTTP協議中的狀態碼,咱們此次返回的是200 OK、
Status Code:200 OK(爬蟲會用到)
狀態碼的含義:
常見狀態代碼、狀態描述、說明:
請求頭
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8(爬蟲會用到)
其中
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
用戶是經過什麼工具來請求的,(由於我用的Google瀏覽器,因此顯示的是Chrome)
If-Modified-Since:Wed, 15 Feb 2017 09:14:13 GMT If-None-Match:W/"58a41be5-190aa" Last-Modified:Wed, 15 Feb 2017 09:14:13 GMT ETag:"58a41be5-190aa"這4個通常靜態頁面會用到 If-Modified-Since,If-None-Match這兩個是請求頭,ETag,Last-Modified是返回頭(服務器返回的) 若是If-Modified-Since的值和Last-Modified相等 則代表當前請求的內容沒有變更,服務器返回Status Code:304 Not Modified