iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 8
0
Modern Web

寫給PHP開發者的30堂網路爬蟲開發系列 第 8

Day 8:案例研究 1-2 擷取所有消息為例之分析方法

前言

從前幾天可以知道從RSS拿出我們要的訊息,那接下來就是要拿歷史訊息的方法了。

分析

首先,可以發現到當Google Chrome瀏覽器載入最新消息的頁面時候,當滑鼠移到頁面的最底端,會發現變成下面這張截圖:

https://ithelp.ithome.com.tw/upload/images/20190923/20103975BTlbBwqpI4.png

過一陣子之後,後續的歷史訊息就會顯示再網頁上面了。由此可見,可以推斷出這個模式是這樣子的:

  • 瀏覽器之頁面載入
  • 當滑鼠移到此頁面的底部之後,會出現「loading」等字樣的載入圖示
  • 發送AJAX請求,並將回應的訊息渲染到頁面上面

將上述的步驟試過一遍之後,可以發現是正確的,可以從用F12打開的網頁開發控制中的「Network」分頁發現,如下圖:

https://ithelp.ithome.com.tw/upload/images/20190923/20103975vrskvBx6BJ.png

https://ithelp.ithome.com.tw/upload/images/20190923/20103975c2H8UkaqFX.png

https://ithelp.ithome.com.tw/upload/images/20190923/20103975A4aSgm4AzJ.png

可以從上面的四張圖片發現到下面幾件事情:

  • 利用POST方法請求https://www.nttu.edu.tw/app/index.php?Action=mobileassocgmolist網址
  • 帶過去的參數(Form Data)為:
    • Cg=1009
    • IsTop=0
    • Op=getpartlist
    • Page=2
  • 回應標頭寫內容型態是「text/html; charset=utf-8」
  • 但是從最後一張回應的內容來看,應該是「JSON」字串才對

那如果是「校內活動」的分類呢?利用上面方法分析,可以發現下面的行為:

  • 利用POST方法請求https://www.nttu.edu.tw/app/index.php?Action=mobileassocgmolist網址
  • 帶過去的參數(Form Data)為:
    • Cg=1021
    • IsTop=0
    • Op=getpartlist
    • Page=2
  • 其他的行為,如回應標頭與內容等與上面的一樣,沒有差別

所以,我們可以歸納出如下的結論:

  • 每個訊息分類丟上去請求網址與方法相同。
  • POST丟上去的資料不同,唯一差別的是,指定分類(Cg),以及分頁號碼(Page)

明天,我們就可以依照今日分析出的方法,來實做出我們所需要的各個訊息種類的所有訊息擷取器了!

參考資料

敬請期待!


上一篇
Day 7:案例研究 1-1 解析吧!解析更多的RSS內容
下一篇
Day 9:擷取!案例研究 1-2 擷取所有消息為例
系列文
寫給PHP開發者的30堂網路爬蟲開發30

尚未有邦友留言

立即登入留言