總結5 (http協議與chorme抓包,cookie,ajax載入爬取)
get 請求:從伺服器獲取資料,並不會對伺服器資源產生影響的,使用get請求(一般情況)
post請求:向伺服器傳送資料(登入),上傳檔案等。會對伺服器的資源產生影響的。
請求頭常見引數
在nttp協議中,向伺服器傳送一個請求,資料分為三部分,第一個是把資料放在ur中,第二個是把資料放在body中(在post請求中),第三個就是把資料放在head中。這裡介紹在網路各爬蟲中經常會用到的一些請求頭引數:1.user- Agent:瀏覽器名稱。這個在網路肥蟲中經常會被使用到。請求一個網頁的時候,伺服器通過這個引數就可以知道這個請求是由哪種瀏覽器傳送的。如果我們是通過爬蟲傳送請求,那麼我們的uer- Agent就是 Python,這對於那些有反爬蟲機制的網站來說,可以輕易的判斷你這個請求是爬蟲。因此我們經常設定這個值力一些瀏覽器的值,來偽裝我們的肥蟲2. Referer:表明當前這個請求是從哪個url過來的,這個一般也可以用來做反爬蟲技木。如果不是從指定西面過來的,那麼就不做相關的響應。
3cookies:"http協議是無狀態的,也就是同一個人傳送了兩次請求,伺服器沒有能力知道這兩個請求是否來自同一個人。因此這時候就用 cookies來做標識。一般如果想要做登入後才能訪問的網站,那麼就需要傳送 cookies資訊了。
常見響應狀態碼:
1. 200:請求正常,伺服器正常的返回資料。
2. 301:永久重定向。
3. 302:臨時重定向。比加在訪問一個需要登入的頁面的時候,而此時沒有登入,那麼就會重定向到登入頁面。
4. 400:請求的ur1在伺服器上找不到。換句話說就是請求url錯誤。
5. 403:伺服器拒絕訪問,許可權不夠。
6 . 500:伺服器內部錯誤。可能是伺服器出現bug了\
什麼是 cookie:
在網站中http請求是無狀態的。也就是說即使第一次和服務端連線後並且置錄成功後,第二次請求伺服器依然不能知道當前請求是哪個使用者。 cookie的出現就是為了解決這個問題,第一次置錄後伺服器返回一些資料( cookie)給瀏覽器,然後測覽器儲存在本地,當該使用者傳送第二次請求的時候,就會自動的把上次請求儲存的 cookie資料自動的攜帶給伺服器,伺服器通過瀏覽器攜帶的資料就能判斷當前使用者是哪個了。 cookie儲存的資料量有限,不同的瀏覽器有不同的儲存大小,但一般不超過4KB。因此使用 cookie只能儲存一些小量的資料。
cookie的格式: Set-Cookie: NAME=VALUE: Expires/Max-age=DATE: PathaPATH: Domain=DOMAIN NAME: SECURE。詳細解釋看下面
cookie引數意義
NAME:cokie的名字
VALUE: cookie的值。
Expires:coke的過期時間。有過期時間的。
Path: cookie作用的路徑。
Domain: cookie作用的域名。SECURE:是否只在http協議下起作用,cookies是會限制那個域名使用的。
http.cookiejar模組
該模組主要的類有 CookieJar,FileCookieJar, MozillacookieJar,LwPCookieJar,這四個類的作用分別如下:
1.CookieJar管理Http cookie值、儲存http請求生成的cookie,向傳出的http請求新增oke的對像,整個cookie都儲存在記憶體中,對CookieJar例項進行垃圾回收後cookie也將丟失
2. FileCoakieJar(filename,delaylosd-None),從cookiejar派生而來,用來建立cookieJar例項,檢索cookie資訊並從
將cookie儲存到檔案中,filename是儲存的檔名,delayload為True時支援延遲訪防問檔案,只有在需要時才讀取檔案或在檔案中儲存資料。
3. MozillaCookieJar (filename. delayload=None, policy=None):從 File CookieJar派生而來,建立與Mozilla瀏覽器cookies. txt相容的File CookieJar例項。
4. LWPCookieJar(filename. delayload= None, policy=None):從 File CookieJan派生而來,建立與 ibwwwperl標準的 Set- Cookie3檔案格式相容的 File CookieJar例項。