為了方便比較人中之龍 Online 中日兩版的活動順序,於是做了簡單的撈取工具。
![](https://truth.bahamut.com.tw/s01/202005/46154bd5d23e707a372df2e71ebaac07.PNG)
![](https://truth.bahamut.com.tw/s01/202005/4d5e5283933b1a06dd604eacb055c86f.JPG)
![](https://truth.bahamut.com.tw/s01/202005/9caeeb920e3a14a54209f6cf3074a2b8.PNG)
![](https://truth.bahamut.com.tw/s01/202005/ec6eecad01ba40e572ea326772fa98b6.PNG)
![](https://truth.bahamut.com.tw/s01/202005/3a2c55c23df8bd66e1868863621024cb.PNG)
![](https://truth.bahamut.com.tw/s01/202005/35d62c268feff7a96ee93925dbe6a203.PNG)
![](https://truth.bahamut.com.tw/s01/202005/cb4cc1dc10ad50d599c5cebada1d3ea5.PNG)
![](https://truth.bahamut.com.tw/s01/202005/3c66332e6a3a00335934a8b2e4888546.PNG)
首先來介紹一下 HtmlAgilityPack,這是個好用的 DOM 解析工具,能直接在 Nuget 上找到。
接下來是程式碼的部分,短短幾行不難理解。
>> 紅框
為目標網址,若想撈取有編號規律的大量頁面,建議每次操作間相隔 1 到 3 秒,爬的太快可能會被誤認為攻擊,想當年為了製作畢業專題,讓學校 Wifi 被 PCHome 鎖了好幾次。
>> 藍框
為網頁上目標的 DOM 路徑(應該是這樣稱呼吧),像 "/html/body/div[3]" 代表的就是 html 中的 body 中的第三個 div。
>> 綠框
根據目標類型不同,提取內容的屬性也有差,例如:innerHTML 和 outerHTML。
最後來檢驗一下成果。
>> 最新公告
直接對兩版的公告列表抓取第一筆,可以發現兩邊都有用數字編號的習慣。
>> 日版查詢
先前在網址看到的數字在此時可以拿來當成搜尋區間,在結束編號那填上數字,程式就會自動網前抓取 30 筆,如:輸入 1155 會抓 1125 - 1155 號的公告。
如果輸入數字小於 30,會將範圍設成 1 到輸入數。
>> 臺版查詢
概念和日版一樣,差在跳號多所以數字比較大。
以上介紹完畢,程式原碼和執行檔載點如下。 (連結可用檢查:2022/05/30)