python爬蟲的基礎建立在對服務器的請求和對響應的解析上,所以對服務器請求響應過程的了解是每個爬蟲工程師必不可少的技能。今天小編帶來一篇python爬蟲基礎——爬蟲的請求方法介紹,希望能對剛學習爬蟲的小伙伴有所幫助。
一、請求目標(URL)
URL又叫作統(tǒng)一資源定位符,是用于完整地描述Internet上網(wǎng)頁和其他資源的地址的一種方法。類似于windows的文件路徑。
二、網(wǎng)址的組成:
1.http://:這個是協(xié)議,也就是HTTP超文本傳輸協(xié)議,也就是網(wǎng)頁在網(wǎng)上傳輸?shù)膮f(xié)議。
2.mail:這個是服務器名,代表著是一個郵箱服務器,所以是mail。
3.163.com:這個是域名,是用來定位網(wǎng)站的獨一無二的名字。
4.mail.163.com:這個是網(wǎng)站名,由服務器名+域名組成。
5./:這個是根目錄,也就是說,通過網(wǎng)站名找到服務器,然后在服務器存放網(wǎng)頁的根目錄。
6.index.html:這個是根目錄下的網(wǎng)頁。
7.http://mail.163.com/index.html:這個叫做URL,統(tǒng)一資源定位符,全球性地址,用于定位網(wǎng)上的資源。
三、請求體(request)
就像打電話一樣,HTTP到底和服務器說了什么,才能讓服務器返回正確的消息的,其實客戶端的請求告訴了服務器這些內容:請求行、請求頭部、空行、請求數(shù)據(jù)
四、請求方法(Method)
HTTP請求可以使用多種請求方法,但是爬蟲最主要就兩種方法:GET和POST方法。
get請求:一般情況下,只從服務器獲取數(shù)據(jù)下來,并不會對服務器資源產生任何影響的時候會使用get請求。
post請求:向服務器發(fā)送數(shù)據(jù)(登錄)、上傳文件等,會對服務器資源產生影響的時候會使用
post請求。
以上是在網(wǎng)站開發(fā)中常用的兩種方法。并且一般情況下都會遵循使用的原則。但是有的網(wǎng)站和服務器為了做反爬蟲機制,也經常會不按常理出牌,有可能一個應該使用get方法的請求就一定要改成post請求,這個要視情況而定。
GET與POST方法的區(qū)別:
1.GET是從服務器上獲取數(shù)據(jù),POST是向服務器傳送數(shù)據(jù)
2.GET請求參數(shù)都顯示在瀏覽器網(wǎng)址上,即Get"請求的參數(shù)是URL的一部分。例如: http://www.baidu.com/s?wd=Chinese
3.POST請求參數(shù)在請求體當中,消息長度沒有限制而且以隱式的方式進行發(fā)送,通常用來向HTTP服務器提交量比較大的數(shù)據(jù)。請求的參數(shù)類型包含在"Content-Type"消息頭里,指明發(fā)送請求時要提交的數(shù)據(jù)格式。
注意:
網(wǎng)站制作者一般不會使用Get方式提交表單,因為有可能會導致安全問題。比如說在登陸表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。并且瀏覽器會記錄歷史信息,導致賬號不安全的因素存在。
五、常用的請求報頭
請求頭描述了客戶端向服務器發(fā)送請求時所使用的編碼,以及發(fā)送內容的長度,告訴服務器自己有沒有登陸,采用的什么瀏覽器訪問的等等。
1.Accept:瀏覽器告訴服務器自己接受什么數(shù)據(jù)類型,文字,圖片等。
2.Accept-charset:瀏覽器申明自己接收的字符集。
3.Accept-Encoding:瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支持壓縮,支持什么壓縮方法(gzip, deflate,br)。
4.Accept-Language:瀏覽器申明自己接收的語言。
5.Authorization:授權信息,通常出現(xiàn)在對服務器發(fā)送的WWW-Authenticate頭的應答中。
6.content-Length表示請求消息正文的長度。
7.origin:聲明請求資源的起始位置
8.connection:處理完這次請求后,是斷開連接還是繼續(xù)保持連接。9.Cookie:發(fā)送給WEB服務器的Cookie內容,經常用來判斷是否登陸了。
9.Cookie:發(fā)送給WEB服務器的Cookie內容,經常用來判斷是否登陸了。
10.Host:客戶端指定自己想訪問的WEB服務器的域名/IP地址和端口號。
11.If-Modified-since:客戶機通過這個頭告訴服務器,資源的緩存時間。只有當所請求的內容在指定的時間后又經過修改才返回它,否則返回304"Not Modified"應答。
12.Pragma:指定"no-cache"值表示服務器必須返回一個刷新后的文檔,即使它是代理服務器而且已經有了頁面的本地拷貝。
13.Referer:告訴服務器該頁面從哪個頁面鏈接的。
14.From∶請求發(fā)送者的email地址,由一些特殊的Web客戶程序使用,瀏覽器不會用到它。
15.(user-Agent:瀏覽器表明自己的身份(是哪種瀏覽器)
16.upgrade-insecure-requests∶申明瀏覽器支持從http請求自動升級為https請求,并且在以后發(fā)送請求的時候都使用https。
UA-Pixels,uA-Color,uA-oS,UA-CPU:由某些版本的IE瀏覽器所發(fā)送的非標準的請求頭,表示屏幕大小、顏色深度、操作系統(tǒng)和CPu類型。
六、requests模塊查看請求體
在我們用requests模塊請求數(shù)據(jù)的時候攜帶上訴請求報頭的字段信息,將我們的爬蟲代碼進行偽裝。同樣的偽裝之后我們也可以通過代碼查看請求體的字段信息,有如下幾種常見的屬性:
#查看請求體中的url地址
response.request.url
#查看請求體中的請求頭信息
response.request.headers
#查看請求體中的請求方法
response.request.method
到此這篇Python爬蟲基礎講解的內容就講解到這了,希望能對小伙伴有所幫助。也希望希望大家以后多多支持W3Cschool!