delphi 用idhttp做web页面数据抓取 注意事项

这里不讨论webbrowse方式了 。直接采用indy的 idhttp  Get post 可以很方便的获取网页数据。

但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了。这几年也做了不少类似工具 总结了几点 好记性不如烂笔头。

  1. 内存泄露 获取页面文本 少不了用到html解析 具体到delphi 估计采用mshtml htmltotext 方法的不少,这个方案再大数据量时就会内存溢出 导致程序崩溃,而这并不是每个程序员都知道。解决的方案:采用自己的html解析类 这里我要感谢 武稀松(csdn称呼) 该类已非常完善 不存在内存泄露 而且目前还没遇到解析不了的网页。
  2. out of memory  。获取下来的数据我们一般采取tstrings来内存暂存 殊不知 当数据量达到百万 程序就会吃掉所有内存而报out of memory  解决方案很简单 定时定量存为文件。
  3. 线程池。下载我们都希望是越快越好 那么很容易就采用多线程方案。再这里我建议采用线程池 而不是频繁的创建销毁线程。
  4. 异常处理。刷网页数据会越到各种奇葩异常数据 这时需要我们过滤 编写健壮代码 已保证程序不over。

 

delphi 用idhttp做web页面数据抓取 注意事项,布布扣,bubuko.com

delphi 用idhttp做web页面数据抓取 注意事项

上一篇:PHP合并数组array_merge函数运算符加号与的区别


下一篇:SSRF漏洞基础知识