2016年7月21日 星期四

[Python] 簡易網站爬蟲 ( Web Crawler) 抓取公開資訊觀測站的資料 - Payload 和 Session (上)



平常工作上沒啥機會用到,所以很久沒有寫爬蟲了.最近因為平常下班沒事幹某人有工作上的需求,看他每天人工複製貼上很辛苦,就來從操舊業一下.這次要抓的是公開資訊觀測站中,上市上櫃公司資料上市上櫃公司資料可以依照產業別看到各公司的股東,地址,會計師事務所等基本資料,格式非常整齊,是個很好解析的資料.但是卻沒辦法直接從網址抓取,因為這個網頁有兩個特別的地方:
  1. 傳遞資料是用 POST 方法,而不是 GET.
  2. 網站有認 Session ,要在同一個 Session 中使用POST才能正確取得資料.
一些基本網站分析方式可以參考先前的拙作:
Session的概念在Web 技術中的 Session 是什麼?講得很清楚,簡單來說就是當你第一次進入上市上櫃公司資料這個網頁的時候,網站伺服器會給你一個號碼牌,稱為 session ,你要拿著這個 Session 和適當的 Payload 才能跟伺服器要資料.為的就是避免爬蟲沒有經過首頁,直接透過 Payload 取得資料.

但是現在很多套件都幫我們處理好 Session 和 Payload 的問題,我們只要直接拿來用就行了,像是這樣:
  • 第二欄定義了目標網址
  • 第三個欄位定義要放進去的 Payload,這些Payload的欄位,可以在 post 方法中找到:

  • 至於Session就交給 request.Session()  幫我們解決.只要用這個物件 s 所呼叫的 get 或 post 方法都會算在同一個 session 裡面
  • 下一節將介紹怎麼從抓下來的HTML 檔中找到我們要抓的資料.