Ejemplo n.º 1
0
 /// <summary>
 /// 通常爬虫是从一系列种子(Seed)网页开始,然后使用这些网页中的链接去获取其他页面.()
 /// </summary>
 /// <param name="seeds">
 /// </param>
 public void InitSeeds(string[] seeds)
 {
     urlQueue.Clear();
     // 使用种子URL进行队列初始化
     foreach (string s in seeds)
     {
         urlQueue.Enqueue(s);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// foamliu, 2009/12/27.
 /// 这个方法主要做三件事: 1.获取页面. 2.提取URL并加入队列. 3.获取面上的邮件地址
 /// </summary>
 /// <param name="url"></param>
 private static void Fetch(CollectorThread collector, string url)
 {
     try
     {
         // 获取页面.
         collector.Url = url;
         if (collector.Dirty)
         {
             collector.CollectotThreadCallbacked(collector);
         }
         string   html    = HtmlHelper.GetHtml(url, "UTF-8");
         string   baseUri = UrlHelper.GetBaseUri(url);
         string[] links   = UrlHelper.ExtractLinks(baseUri, html);
         // 提取URL并加入队列.
         UrlQueue urlQueue = collector.Collector.urlQueue;
         foreach (string link in links)
         {
             //判断url过长,避免爬虫陷阱
             if (link.Length > 256)
             {
                 continue;
             }
             //判断是否访问过,避免出现环
             if (collector.Collector.HSCollectorUrl.Contains(link))
             {
                 continue;
             }
             // 加入队列
             urlQueue.Enqueue(link);
         }
         //检索页面上的邮件
         if (collector.Dirty)
         {
             collector.CollectotThreadCallbacked(collector);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }