Http協(xié)議簡述
引自:Python3.x爬蟲教程:爬網(wǎng)頁、爬圖片、自動登錄
HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫。
Http請求響應(yīng)模型:
Http請求流程(又稱為事務(wù)):
- 建立連接
- 建立連接后,客戶機發(fā)送一個請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標識符(URL)、協(xié)議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可能的內(nèi)容。
- 服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務(wù)器信息、實體信息和可能的內(nèi)容。
- 客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機與服務(wù)器斷開連接。
請求報頭
請求報頭允許客戶端向服務(wù)器端傳遞請求的附加信息以及客戶端自身的信息。
** 常用報頭:**
** 1. Accept **
Accept請求報頭域用于指定客戶端接受哪些類型的信息。
**eg **:Accept:image/gif,表明客戶端希望接受GIF圖象格式的資源;
Accept:text/html,表明客戶端希望接受html文本。
** 2. Accept-Charset **
Accept-Charset請求報頭域用于指定客戶端接受的字符集。
** eg **:Accept-Charset:iso-8859-1,gb2312.如果在請求消息中沒有設(shè)置這個域,缺省是任何字符集都可以接受。
** 3. Accept-Encoding **
Accept-Encoding請求報頭域類似于Accept,但是它是用于指定可接受的內(nèi)容編碼。
** eg **:Accept-Encoding:gzip.deflate.如果請求消息中沒有設(shè)置這個域服務(wù)器假定客戶端對各種內(nèi)容編碼都可以接受。
** 4. Accept-Language **
Accept-Language請求報頭域類似于Accept,但是它是用于指定一種自然語言。
** eg **:Accept-Language:zh-cn.如果請求消息中沒有設(shè)置這個報頭域,服務(wù)器假定客戶端對各種語言都可以接受。Authorization
** 5. Host **
Host請求報頭域主要用于指定被請求資源的Internet主機和端口號。
** eg **:http://www.guet.edu.cn/index.html
Host:www.guet.edu.cn 此處使用缺省端口號80
** 6. User-Agent **
User-Agent請求報頭域允許客戶端將它的操作系統(tǒng)、瀏覽器和其它屬性告訴服務(wù)器。不過,這個報頭域不是必需的。
響應(yīng)報頭
響應(yīng)報頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息,以及關(guān)于服務(wù)器的信息和對Request-URI所標識的資源進行下一步訪問的信息。
**1. Location **
Location響應(yīng)報頭域用于重定向接受者到一個新的位置。Location響應(yīng)報頭域常用在更換域名的時候。
** 2.Server **
Server響應(yīng)報頭域包含了服務(wù)器用來處理請求的軟件信息。
** 3.WWW-Authenticate **
WWW-Authenticate響應(yīng)報頭域必須被包含在401(未授權(quán)的)響應(yīng)消息中,客戶端收到401響應(yīng)消息時候,并發(fā)送Authorization報頭域請求服務(wù)器對其進行驗證時,服務(wù)端響應(yīng)報頭就包含該報頭域。
** eg **:WWW-Authenticate:Basic realm=Basic Auth Test! //可以看出服務(wù)器對請求資源采用的是基本驗證機制。
Python3 爬蟲入門
#python3.4
#這是一個簡單的示例
import urllib.request
url = 'http://douban.com/'
webPage = urllib.request.urlopen(url)
data = webPage.read()
data = data.decode('UTF-8')
print(data) #顯示網(wǎng)頁源代碼
print(type(webPage)) #顯示網(wǎng)頁類型:<class 'http.client.HTTPResponse'>
print(webPage.geturl()) #顯示網(wǎng)址:https://www.douban.com/
print(webPage.info()) #顯示網(wǎng)頁信息
'''Date: Thu, 13 Oct 2016 13:33:16 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 95363
Connection: close
Vary: Accept-Encoding
X-Xss-Protection: 1; mode=block
X-Douban-Mobileapp: 0
Expires: Sun, 1 Jan 2006 01:00:00 GMT
Pragma: no-cache
Cache-Control: must-revalidate, no-cache, private
Set-Cookie: ll="118318"; path=/; domain=.douban.com; expires=Fri, 13-Oct-2017 13:33:16 GMT
Set-Cookie: bid=GPcbKhAfcmA; Expires=Fri, 13-Oct-17 13:33:16 GMT; Domain=.douban.com; Path=/
X-DOUBAN-NEWBID: GPcbKhAfcmA
X-DAE-Node: sindar10c
X-DAE-App: sns
Server: dae
Strict-Transport-Security: max-age=15552000; '''
print(webPage.getcode()) #返回狀態(tài)碼:200
