通用网页抓取设计

导言

网页抓取是一个比较简单的工作,主要分为以下三步:一:分析要抓取的网页,获取待抓取的页面地址;二、用下载方式缓存网页,如果网站设置有访问时间限制,就要用这步来缓存;三、分析缓存中的网页,整理数据

在所有步骤中,对于所有的网站,只有获取换取地址、缓存网页、处理网页这几个方式不一定一样,其它的处理方式,都可以认为是一样的

总体接口设计

web标准设计
接口设计

包括地址抓取、处理、文件缓存、消息传递委托类型,消息类型;

web标准设计
ICatch(抓取接口)

接口说明:

抓取地址接口
 1   /// <summary>
 2    /// 抓取地址接口
 3    /// </summary>

 4    public interface ICatch
 5    {
 6        string StartUrl set;}
 7
 8        string StartProcessUrl set;}
 9        /// <summary>
10        /// 显示消息接口
11        /// </summary>

12        ShowMessage SM set;}
13        /// <summary>
14        /// 要抓取的地址总数
15        /// </summary>

16        int Count get;}
17
18        /// <summary>
19        /// 当前下载网页的位置
20        /// </summary>

21        int Loc get;}
22
23        /// <summary>
24        /// 当前处理的位置
25        /// </summary>

26        int ProcessLoc get;}
27        /// <summary>
28        /// 保存换取到的数据
29        /// </summary>
30        /// <param name="data">数据</param>
31        /// <param name="FileName">要保存的文件名</param>
32        /// <returns></returns>

33        bool Save(byte[] data, string FileName);
34        /// <summary>
35        /// 获取下一个网页地址
36        /// </summary>
37        /// <returns></returns>

38        string GetNextUrl();
39        /// <summary>
40        /// 保存待抓取的网址
41        /// </summary>
42        /// <param name="wb">网页</param>

43        bool SaveUrl(WebBrowser wb);
44
45        /// <summary>
46        /// 处理网页
47        /// </summary>
48        /// <param name="wb">web浏览器</param>
49        /// <returns></returns>

50        bool ProcessUrl(WebBrowser wb);
51
52        /// <summary>
53        /// 获取下一个待处理的网页地址
54        /// </summary>
55        /// <returns></returns>

56        string GetNextProcessUrl();
57        /// <summary>
58        /// 获取下载的地址
59        /// </summary>
60        /// <returns></returns>

61        UrlInfo GetUrl();
62    }

 

web标准设计
ICatchData(缓存网页接口)

接口:

缓存数据接口
 1/// <summary>
 2    /// 缓存数据接口
 3    /// </summary>

 4    public interface ICatchData
 5    {
 6        /// <summary>
 7        /// 消息接口
 8        /// </summary>

 9        ShowMessage SM set;}
10        /// <summary>
11        /// 重设线程数
12        /// </summary>
13        /// <param name="ThreadCount">线程数</param>

14        void ReSetThreadCount(int ThreadCount);
15        /// <summary>
16        /// 初始化下载
17        /// </summary>
18        /// <param name="ca">抓取接口</param>
19        /// <param name="ThreadCount">线程数</param>
20        /// <param name="ThreadSleep">休眠时间</param>
21        /// <param name="RetryCount">出错重试次数</param>

22        void Init(ICatch ca, int ThreadCount, int ThreadSleep,int RetryCount);
23        /// <summary>
24        /// 开始下载
25        /// </summary>

26        void Start();
27        /// <summary>
28        /// 暂停下载
29        /// </summary>

30        void Pause();
31        /// <summary>
32        /// 停止下载
33        /// </summary>

34        void Stop();
35    }

 

 

小结

只要根据不同的网站实现上面的两个接口,就可以实现网页的抓取,处理,再也不用管理浏览器的怎样加载文件

 

posted @ 2008-01-31 11:17  cdboy  阅读(772)  评论(0编辑  收藏  举报