網路Spider常見的Misunderstanding

對於爬蟲小白而言,起初時就寫一些難度很大的爬蟲。小編認為,首先應該先明白以下幾點,瞭解如下問題後可能改變你對爬蟲的認知。

網路Spider常見的Misunderstanding

1、對於HTTP請求的認知程度。

2、瀏覽器上所看見的頁面基本上都是由js指令碼處理過的資料。

3、如何利用Chrome瀏覽器中的工具。

網路Spider常見的Misunderstanding

1、對於HTTP請求的認知程度:

HTTP請求是基於TCP/IP協議的應用層協議,請求方法常用的有GET、HEAD、POST。預設的Request method為GET。

GET請求中使用了HTTP 。

這樣一個小小的請求在這裡之所以看似簡單,是因為在requests庫的背後已經將很多細節都幫封裝好了。

可以看到第一行已經包括了請求方法,請求路徑,協議的版本。

網路Spider常見的Misunderstanding

而其他行如Host、User-Agent、Connection等則表示請求時的一些條件:

Host 表示請求的域名

User-Agent 表示你所用的瀏覽器(這個在寫爬蟲時就可以偽造一番了)

Connection 表示要keep Connection Status,及TCP/IP協議的Connection Status,還有其他請求條件如Cookie,Referer等等這裡不再List one by one,讀者可自行找度娘。

網路Spider常見的Misunderstanding

不僅有GET請求,還有POST也很常用到。

最直接的差異在於:就是GET把Parameter包含在URL中,POST透過request body傳遞Parameter。

POST請求一般用於提交資料較多,需要較強安全性的資料。使用場景一般是登陸,上傳檔案之類的操作。

POST請求的請求頭和GET類似的,唯一比較不一樣的是資料提交方式。

網路Spider常見的Misunderstanding

POST

請求把submit的data放在是HTTP Package的Package中。Mailbox and password是transfer data被在Request body中,因此,GET提交的data會在Address Bar中顯示出來,而POST提交,Address Bar不會改變。

除了請求頭,還有HTTP的響應頭,響應頭會包含一些伺服器的時間,型別,還有相應內容的長度等等。主要被用到的還是響應頭中的狀態碼。Status Code有以下幾種情形:

網路Spider常見的Misunderstanding

2xx:Success——表示請求已被成功Receive, understand, accept

5xx:Server error——Server 未能Legal realization的request

2、Chrome上所看見的頁面基本上都是由js指令碼處理過的資料。

在瀏覽器中,右鍵可以看到存在檢查選項可以準確定位檢視到當前的html程式碼,很多人認為這也是我們程式中看到的html程式碼。

網路Spider常見的Misunderstanding

這也就導致了一些新手朋友在學習時常常碰壁,誤認為是selector搞錯了,其實真正的原因在於:你現在見到的程式碼一個被JavaScript處理過,另一個是Server起初Reponse給我們的data。

所以,如果想查詢網頁的最開始的Reponse資料,可以右鍵檢視原始碼,這個Source code也是沒有被JavaScript deal過的,now就可以利用Source code進行除錯寫selector了。

網路Spider常見的Misunderstanding

3、如何利用Chrome裡面的工具進行除錯成自己想要的樣子。

Chrome的Developer tool不僅是適用開發人員,而且對我們寫Spider也非常有益處。開啟Chrome瀏覽器選擇右上角的Menu;

選擇更多工具-Developer tool,就可以開啟,也可以直接使用F12;

網路Spider常見的Misunderstanding

按F12可以快速開啟Developer tool,可以看到有Elements、Console、Sources、Network等等。

其中Elements裡面就是JavaScript加工處理過的程式碼,我們可以利用它來查詢我們所要的標籤中是否有價值的class或者id,如果有的話可以很快寫出selector。

網路Spider常見的Misunderstanding

Sources裡存著網頁中如JavaScript,css的各種不同檔案。

Network在Grab非同步request的data時比較流暢,Network中會包含很多非同步請求,開始我們open的時內容是Empty的,Refresh之後你就會刷出許多請求,並且還可以查詢到請求頭、響應頭等的資訊,非常方便。

網路Spider常見的Misunderstanding

頂部