App下載

Python爬蟲基礎(chǔ)講解之請(qǐng)求方法介紹

深巷的貓 2021-08-12 10:22:14 瀏覽數(shù) (2445)
反饋

python爬蟲的基礎(chǔ)建立在對(duì)服務(wù)器的請(qǐng)求和對(duì)響應(yīng)的解析上,所以對(duì)服務(wù)器請(qǐng)求響應(yīng)過程的了解是每個(gè)爬蟲工程師必不可少的技能。今天小編帶來一篇python爬蟲基礎(chǔ)——爬蟲的請(qǐng)求方法介紹,希望能對(duì)剛學(xué)習(xí)爬蟲的小伙伴有所幫助。

一、請(qǐng)求目標(biāo)(URL)

URL又叫作統(tǒng)一資源定位符,是用于完整地描述Internet上網(wǎng)頁和其他資源的地址的一種方法。類似于windows的文件路徑。

網(wǎng)址組成解析

二、網(wǎng)址的組成:

1.http://:這個(gè)是協(xié)議,也就是HTTP超文本傳輸協(xié)議,也就是網(wǎng)頁在網(wǎng)上傳輸?shù)膮f(xié)議。

2.mail:這個(gè)是服務(wù)器名,代表著是一個(gè)郵箱服務(wù)器,所以是mail。

3.163.com:這個(gè)是域名,是用來定位網(wǎng)站的獨(dú)一無二的名字。

4.mail.163.com:這個(gè)是網(wǎng)站名,由服務(wù)器名+域名組成。

5./:這個(gè)是根目錄,也就是說,通過網(wǎng)站名找到服務(wù)器,然后在服務(wù)器存放網(wǎng)頁的根目錄。

6.index.html:這個(gè)是根目錄下的網(wǎng)頁。

7.http://mail.163.com/index.html:這個(gè)叫做URL,統(tǒng)一資源定位符,全球性地址,用于定位網(wǎng)上的資源。

三、請(qǐng)求體(request)

就像打電話一樣,HTTP到底和服務(wù)器說了什么,才能讓服務(wù)器返回正確的消息的,其實(shí)客戶端的請(qǐng)求告訴了服務(wù)器這些內(nèi)容:請(qǐng)求行、請(qǐng)求頭部、空行、請(qǐng)求數(shù)據(jù)

請(qǐng)求體

四、請(qǐng)求方法(Method)

HTTP請(qǐng)求可以使用多種請(qǐng)求方法,但是爬蟲最主要就兩種方法:GETPOST方法。

get請(qǐng)求:一般情況下,只從服務(wù)器獲取數(shù)據(jù)下來,并不會(huì)對(duì)服務(wù)器資源產(chǎn)生任何影響的時(shí)候會(huì)使用get請(qǐng)求。

post請(qǐng)求:向服務(wù)器發(fā)送數(shù)據(jù)(登錄)、上傳文件等,會(huì)對(duì)服務(wù)器資源產(chǎn)生影響的時(shí)候會(huì)使用
post請(qǐng)求。

以上是在網(wǎng)站開發(fā)中常用的兩種方法。并且一般情況下都會(huì)遵循使用的原則。但是有的網(wǎng)站和服務(wù)器為了做反爬蟲機(jī)制,也經(jīng)常會(huì)不按常理出牌,有可能一個(gè)應(yīng)該使用get方法的請(qǐng)求就一定要改成post請(qǐng)求,這個(gè)要視情況而定。

GET與POST方法的區(qū)別:

1.GET是從服務(wù)器上獲取數(shù)據(jù),POST是向服務(wù)器傳送數(shù)據(jù)

2.GET請(qǐng)求參數(shù)都顯示在瀏覽器網(wǎng)址上,即Get"請(qǐng)求的參數(shù)是URL的一部分。例如: http://www.baidu.com/s?wd=Chinese

3.POST請(qǐng)求參數(shù)在請(qǐng)求體當(dāng)中,消息長(zhǎng)度沒有限制而且以隱式的方式進(jìn)行發(fā)送,通常用來向HTTP服務(wù)器提交量比較大的數(shù)據(jù)。請(qǐng)求的參數(shù)類型包含在"Content-Type"消息頭里,指明發(fā)送請(qǐng)求時(shí)要提交的數(shù)據(jù)格式。

注意:

網(wǎng)站制作者一般不會(huì)使用Get方式提交表單,因?yàn)橛锌赡軙?huì)導(dǎo)致安全問題。比如說在登陸表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。并且瀏覽器會(huì)記錄歷史信息,導(dǎo)致賬號(hào)不安全的因素存在。

五、常用的請(qǐng)求報(bào)頭

請(qǐng)求頭描述了客戶端向服務(wù)器發(fā)送請(qǐng)求時(shí)所使用的編碼,以及發(fā)送內(nèi)容的長(zhǎng)度,告訴服務(wù)器自己有沒有登陸,采用的什么瀏覽器訪問的等等。

1.Accept:瀏覽器告訴服務(wù)器自己接受什么數(shù)據(jù)類型,文字,圖片等。

2.Accept-charset:瀏覽器申明自己接收的字符集。

3.Accept-Encoding:瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支持壓縮,支持什么壓縮方法(gzip, deflate,br)。

4.Accept-Language:瀏覽器申明自己接收的語言。

5.Authorization:授權(quán)信息,通常出現(xiàn)在對(duì)服務(wù)器發(fā)送的WWW-Authenticate頭的應(yīng)答中。

6.content-Length表示請(qǐng)求消息正文的長(zhǎng)度。

7.origin:聲明請(qǐng)求資源的起始位置

8.connection:處理完這次請(qǐng)求后,是斷開連接還是繼續(xù)保持連接。9.Cookie:發(fā)送給WEB服務(wù)器的Cookie內(nèi)容,經(jīng)常用來判斷是否登陸了。

9.Cookie:發(fā)送給WEB服務(wù)器的Cookie內(nèi)容,經(jīng)常用來判斷是否登陸了。

10.Host:客戶端指定自己想訪問的WEB服務(wù)器的域名/IP地址和端口號(hào)。

11.If-Modified-since:客戶機(jī)通過這個(gè)頭告訴服務(wù)器,資源的緩存時(shí)間。只有當(dāng)所請(qǐng)求的內(nèi)容在指定的時(shí)間后又經(jīng)過修改才返回它,否則返回304"Not Modified"應(yīng)答。

12.Pragma:指定"no-cache"值表示服務(wù)器必須返回一個(gè)刷新后的文檔,即使它是代理服務(wù)器而且已經(jīng)有了頁面的本地拷貝。

13.Referer:告訴服務(wù)器該頁面從哪個(gè)頁面鏈接的。

14.From∶請(qǐng)求發(fā)送者的email地址,由一些特殊的Web客戶程序使用,瀏覽器不會(huì)用到它。

15.(user-Agent:瀏覽器表明自己的身份(是哪種瀏覽器)

16.upgrade-insecure-requests∶申明瀏覽器支持從http請(qǐng)求自動(dòng)升級(jí)為https請(qǐng)求,并且在以后發(fā)送請(qǐng)求的時(shí)候都使用https。

UA-Pixels,uA-Color,uA-oS,UA-CPU:由某些版本的IE瀏覽器所發(fā)送的非標(biāo)準(zhǔn)的請(qǐng)求頭,表示屏幕大小、顏色深度、操作系統(tǒng)和CPu類型。

六、requests模塊查看請(qǐng)求體

在我們用requests模塊請(qǐng)求數(shù)據(jù)的時(shí)候攜帶上訴請(qǐng)求報(bào)頭的字段信息,將我們的爬蟲代碼進(jìn)行偽裝。同樣的偽裝之后我們也可以通過代碼查看請(qǐng)求體的字段信息,有如下幾種常見的屬性:

#查看請(qǐng)求體中的url地址
response.request.url
#查看請(qǐng)求體中的請(qǐng)求頭信息
response.request.headers
#查看請(qǐng)求體中的請(qǐng)求方法
response.request.method

到此這篇Python爬蟲基礎(chǔ)講解的內(nèi)容就講解到這了,希望能對(duì)小伙伴有所幫助。也希望希望大家以后多多支持W3Cschool!


0 人點(diǎn)贊