HTTP響應狀態碼參考:
1xx:信息
100?Continue
服務器僅接收到部分請求,但是一旦服務器并沒有拒絕該請求,客戶端應該繼續發送其余的請求。
101?Switching?Protocols
服務器轉換協議:服務器將遵從客戶的請求轉換到另外一種協議。
2xx:成功
200?OK
請求成功(其后是對GET和POST請求的應答文檔)
201?Created
請求被創建完成,同時新的資源被創建。
202?Accepted
供處理的請求已被接受,但是處理未完成。
203?Non-authoritative?Information
文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝。
204?No?Content
沒有新文檔。瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
205?Reset?Content
沒有新文檔。但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。
206?Partial?Content
客戶發送了一個帶有Range頭的GET請求,服務器完成了它。
3xx:重定向
300?Multiple?Choices
多重選擇。鏈接列表。用戶可以選擇某鏈接到達目的地。最多允許五個地址。
301?Moved?Permanently
所請求的頁面已經轉移至新的url。
302?Moved?Temporarily
所請求的頁面已經臨時轉移至新的url。
303?See?Other
所請求的頁面可在別的url下被找到。
304?Not?Modified
未按預期修改文檔。客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。
305?Use?Proxy
客戶請求的文檔應該通過Location頭所指明的代理服務器提取。
306?Unused
此代碼被用于前一版本。目前已不再使用,但是代碼依然被保留。
307?Temporary?Redirect
被請求的頁面已經臨時移至新的url。
4xx:客戶端錯誤
400?Bad?Request
服務器未能理解請求。
401?Unauthorized
被請求的頁面需要用戶名和密碼。
401.1
登錄失敗。
401.2
服務器配置導致登錄失敗。
401.3
由于ACL?對資源的限制而未獲得授權。
401.4
篩選器授權失敗。
401.5
ISAPI/CGI應用程序授權失敗。
401.7
訪問被Web?服務器上的?URL?授權策略拒絕。這個錯誤代碼為?IIS?6.0?所專用。
402?Payment?Required
此代碼尚無法使用。
403?Forbidden
對被請求頁面的訪問被禁止。
403.1
執行訪問被禁止。
403.2
讀訪問被禁止。
403.3
寫訪問被禁止。
403.4
要求SSL。
403.5
要求SSL?128。
403.6
IP地址被拒絕。
403.7
要求客戶端證書。
403.8
站點訪問被拒絕。
403.9
用戶數過多。
403.10
配置無效。
403.11
密碼更改。
403.12
拒絕訪問映射表。
403.13
客戶端證書被吊銷。
403.14
拒絕目錄列表。
403.15
超出客戶端訪問許可。
403.16
客戶端證書不受信任或無效。
403.17
客戶端證書已過期或尚未生效。
403.18
在當前的應用程序池中不能執行所請求的URL。這個錯誤代碼為?IIS?6.0?所專用。
403.19
不能為這個應用程序池中的客戶端執行CGI。這個錯誤代碼為?IIS?6.0?所專用。
403.20
Passport登錄失敗。這個錯誤代碼為?IIS?6.0?所專用。
404?Not?Found
服務器無法找到被請求的頁面。
404.0
沒有找到文件或目錄。
404.1
無法在所請求的端口上訪問Web?站點。
404.2
Web服務擴展鎖定策略阻止本請求。
404.3
MIME映射策略阻止本請求。
405?Method?Not?Allowed
請求中指定的方法不被允許。
406?Not?Acceptable
服務器生成的響應無法被客戶端所接受。
407?Proxy?Authentication?Required
用戶必須首先使用代理服務器進行驗證,這樣請求才會被處理。
408?Request?Timeout
請求超出了服務器的等待時間。
409?Conflict
由于沖突,請求無法被完成。
410?Gone
被請求的頁面不可用。
411?Length?Required
"Content-Length"?未被定義。如果無此內容,服務器不會接受請求。
412?Precondition?Failed
請求中的前提條件被服務器評估為失敗。
413?Request?Entity?Too?Large
由于所請求的實體的太大,服務器不會接受請求。
414?Request-url?Too?Long
由于url太長,服務器不會接受請求。當post請求被轉換為帶有很長的查詢信息的get請求時,就會發生這種情況。
415?Unsupported?Media?Type
由于媒介類型不被支持,服務器不會接受請求。
416?Requested?Range?Not?Satisfiable
服務器不能滿足客戶在請求中指定的Range頭。
417?Expectation?Failed
執行失敗。
423
鎖定的錯誤。
5xx:服務器錯誤
500?Internal?Server?Error
請求未完成。服務器遇到不可預知的情況。
500.12
應用程序正忙于在Web?服務器上重新啟動。
500.13
Web服務器太忙。
500.15
不允許直接請求Global.asa。
500.16
UNC授權憑據不正確。這個錯誤代碼為?IIS?6.0?所專用。
500.18
URL授權存儲不能打開。這個錯誤代碼為?IIS?6.0?所專用。
500.100
內部ASP?錯誤。
501?Not?Implemented
請求未完成。服務器不支持所請求的功能。
502?Bad?Gateway
請求未完成。服務器從上游服務器收到一個無效的響應。
502.1
CGI應用程序超時。 ·
502.2
CGI應用程序出錯。
503?Service?Unavailable
請求未完成。服務器臨時過載或當機。
504?Gateway?Timeout
網關超時。
505?HTTP?Version?Not?Supported
服務器不支持請求中指明的HTTP協議版本
(二)爬蟲get,post請求區別
當request發送參數為data 時是post ? ??params---get
#基本GET請求(headers參數 和 parmas參數)
get
import requests
infos={
? ? 'kw':input('輸入想要查詢的信息-')
}
headers = {
? ? "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}
response = requests.get("https://tieba.baidu.com/f?", params = infos, headers = headers)
content = response.content
with open('./baidu.html','wb') as file:
? ? file.write(content)
(三)利用cookie 訪問此網站別的頁面時免登陸,不用傳參數
import urllib.request
import urllib.parse
import http.cookiejar
data={
? ? 'name': input('用戶名:'),
? ? 'pwd': input('密碼:')
}
data=urllib.parse.urlencode(data).encode('utf-8')
headers=[
? ? ('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'),
]
#建cookie對象?? COOKIE_jar 是用來存取獲得到的cookie
cookie_jar= http.cookiejar.CookieJar()
cookie_handler = urllib.request.HTTPCookieProcessor(cookiejar=cookie_jar)
#創建opener對象
cook_opener=urllib.request.build_opener(cookie_handler)
#在發送請求中增加headers
cook_opener.addheaders=headers
response = cook_opener.open(fullurl='http://192.168.12.18:5678/user/login_handler',data=data)
#可以看一下存取的cookie
print(cookie_jar)
for i in cookie_jar:
? ? print(i.name,i.value,i.expires)
content = response.read()
print(content)
with open('./renren1.html','wb') as file:
? ? file.write(content)
#我們利用已經獲取到的cookie直接訪問另一個頁面
response = cook_opener.open(fullurl='http://192.168.12.18:5678/booktest/bookinfo/list')
content = response.read()
print(content)
with open('./renren2.html','wb') as file:
? ? file.write(content)
我們可以查看一下我們存儲的cookie
import requests
url = 'https://www.baidu.com'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
response = requests.get(url=url,headers=headers)
cookies = response.cookies
print(type(cookies))
cookies = requests.utils.dict_from_cookiejar(cookies)
print(type(cookies))
print(cookies)
通過記錄session 同樣也可以
import requests
url1 = 'http://www.renren.com/PLogin.do'
url2 = 'http://www.renren.com/963689126/profile'
data = {
? ? 'email':'18737572516',
? ? 'password':'123456'
}
headers = {
? ? "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}
session=requests.session()
session.headers=headers
response1=session.post(url=url1,data=data)
content1 = response1.content
with open('./renren1.html','wb') as file:
? ? file.write(content1)
response2 = session.get(url=url2)
content2 = response2.content
with open('./renren2.html','wb') as file:
? ? file.write(content2)