從官網介紹來看 Postman 是一款網頁 API 開發測試工具
既然它可以拿來測試 API,那就可以拿來發 Request,更可以拿來測試我們的爬蟲
如果你們看完文章覺得有需要可以再回來下載
為什麼我們需要 Postman 這樣的工具 ?
因為前方路況不明,我們常常遇到「自己看到的跟爬蟲看到的不一樣」的情況
假設今天你請求了巴哈姆特的首頁
如果你想窺探一下爬蟲的視角,最好不要直接用 print 看網頁原始碼
你可以這樣做 :
import requests
response = requests.get('https://www.gamer.com.tw/')
with open('Bahamut.html', 'w+', encoding = 'utf-8') as f: f.write(response.text)
|
其實就是直接把網頁原始碼寫成 HTML 檔案
你的執行資料夾底下就會多一個 Bahamut.html,點開來看就是爬蟲的視角了
圖中我標記了 2 個重點,首先是登入的地方
因為爬蟲是 GET 請求,而且沒有帶任何 headers,所以會看到「我要登入」的字樣
在爬其他網頁的時候也要注意這個細節,有時候你以為你 POST 成功了
或者你以為你的 Cookie 帶入都正確了,實際上你根本還沒通過驗證
第二個重點,為什麼有 8 張圖片沒有正常顯示 ?
對著它們按右鍵並且檢查會發現圖片路徑是相對位置,難怪沒有正常顯示
不過還是偵測的到該節點,網址拼一拼資料還是正確的,影響不大
如果用 Postman 送出請求看到的樣子
我在圖中使用了 3 個標記
首先第一個地方是讓我們調整 HTTP Methods 的地方
第二個是調整一些參數設定,包括 headers 或 POST 的送出資料
如果你要使用 POST,記得到 body 的 Form Data 欄位帶入送出資料
第三個地方是 Postman 最強大的地方,就是可以圖形化網頁,或者應該說呈現 HTML
也可以選擇看原始碼,而且 Postman 會很貼心的幫你排版過
Postman 跟終端機都有一個特性,就是不執行 JavaScript
也正是因為很多網頁都會使用 JavaScript 或 AJAX
如果讓它影響到我們在意的資料,就有可能造成我們看到的跟爬蟲不一樣
Postman 就算是一個測試自己請求有沒有成功的工具
之前的創作 POST,你現在就可以用 Postman 來測試看看文章使用的範例網站
確定自己的測試結果符合預期,再安心的寫成 Python Code
這邊有兩個網址,第一個網址會再兩秒後用 JavaScript 重導向至另一個網址
第二個網址也是再兩秒後,不過是用 AJAX 改變網頁內容
假設我們想要的資料都是 JavaScript 或 AJAX 渲染過的部分,就可能造成爬蟲設計困難
畢竟這兩個網頁都很貼心的給了兩秒的時間讓你用肉眼觀察,其他網站就得靠自己分析
這兩個網站無論你用 Python requests 或 Postman 都只看得到渲染前的畫面
原因剛剛說過,Postman 不執行 JavaScript
當你發現 Postman 跟瀏覽器看到的不一樣時,就可以少走一些冤枉路了
進而再想辦法分析及思考如何爬取
我認為 Postman 的定位介於終端機跟瀏覽器之間
以圖形化的介面窺探爬蟲的視角