雖然爬蟲只需要使用到 URL 送 Request 就好,但我們還是需要對 API / CGI 有一些簡單的了解。
因為一個網站是基於 API 還是 CGI 設計的,他們 HTTP Request 跟 Response 的方式可能也會不一樣。
有人會問那使用 API 或 CGI 對網站的 Loading 有什麼不同的影響嗎?
有是有,但我們是要爬蟲又不是架網站,不甘我們的事,我們來了解什麼是介面就好。
引用自維基百科:
應用程式介面(英語:Application Programming Interface),縮寫為API,是一種計算介面,它定義多個軟體中介之間的互動,以及可以進行的呼叫(call)或請求(request)的種類,如何進行呼叫或發出請求,應使用的資料格式,應遵循的慣例等。
介面!又是介面!所以什麼是介面?寫這樣漏漏長,有看沒有懂欸。
介面:
假設有一個搖桿,搖桿上的每個按鈕,各自有各自的功能對吧,那就是搖桿的介面,我們只需要怎麼用不需要知道裡面是怎麼運作的。
回到網頁上,也就是說網頁上那些查詢、新增等等功能,那些就是界面(URL),而我們只需要知道餵給他們什麼參數,不需要知道他們內部邏輯,就能得到預期的結果。
所以當我們要爬蟲時,就得先調查這些 URL 可以吃什麼參數、怎麼使用、有什麼限制,再根據我們想要的結果丟相對應的參數給它。
Request 跟 Response,通常
都是用 Json 來包裝資料,資料格式依照設計也會有所不同
。
引用自維基百科:
通用閘道器介面 (英語:Common Gateway Interface,CGI) 是為提供網路服務而執行控制台應用 (或稱命令列介面)的程式,提供於伺服器上實現動態網頁的通用協定。通常情況下,一次請求對應一個CGI 指令碼的執行,生成一個 HTML。
一樣也是介面。
有些網頁會使用 CGI 技術來建構他們的網站,通常 Response 會是 HTML
。但不是一定,也有其他格式的 Response。
Request 的話,通常
都是用 Form 來包裝資料,這點要注意一下,不然是拿不到想要的 Response 的喔!這邊也一樣,資料格式依照設計也會有所不同
。
總之,不管網頁提供什麼介面,寫爬蟲程式前要好好調查一下那些介面要怎麼使用喔!
[1] Wiki - 應用程式介面
[2] Wiki - 通用閘道器介面