這里不討論webbrowse方式了 。直接采用indy的 idhttp Get post 可以很方便的獲取網頁數據。
但如果要抓取大量數據 程序穩定運行不崩潰就不那么容易了。這幾年也做了不少類似工具 總結了幾點 好記性不如爛筆頭。
- 內存泄露 獲取頁面文本 少不了用到html解析 具體到delphi 估計采用mshtml htmltotext 方法的不少,這個方案再大數據量時就會內存溢出 導致程序崩潰,而這並不是每個程序員都知道。解決的方案:采用自己的html解析類 這里我要感謝 武稀松(csdn稱呼) 該類已非常完善 不存在內存泄露 而且目前還沒遇到解析不了的網頁。
- out of memory 。獲取下來的數據我們一般采取tstrings來內存暫存 殊不知 當數據量達到百萬 程序就會吃掉所有內存而報out of memory 解決方案很簡單 定時定量存為文件。
- 線程池。下載我們都希望是越快越好 那么很容易就采用多線程方案。再這里我建議采用線程池 而不是頻繁的創建銷毀線程。
- 異常處理。刷網頁數據會越到各種奇葩異常數據 這時需要我們過濾 編寫健壯代碼 已保證程序不over。