多线程数据采集

来源:互联网 发布:国承信手机交易软件 编辑:程序博客网 时间:2024/05/17 05:03
  1.  private void button3_Click(object sender, EventArgs e)
  2.         {
  3.             Thread firstTread = new Thread(new ParameterizedThreadStart(GatherProduct));
  4.             Thread secondTread = new Thread(new ParameterizedThreadStart(GatherProduct));
  5.             ArrayList arr1 = new ArrayList();
  6.             arr1.Add(200);
  7.             arr1.Add(300);
  8.             ArrayList arr2 = new ArrayList();
  9.             arr1.Add(300);
  10.             arr1.Add(400);
  11.             firstTread.Start(arr1);
  12.             secondTread.Start(arr1);
  13.             
  14.    
  15.         }
  16.         public   void GatherProduct(object obj)
  17.         {
  18.             ArrayList arr = (ArrayList)obj;
  19.             for (int i = Convert.ToInt32( arr[0].ToString()); i <Convert.ToInt32(  arr[1].ToString()); i++)
  20.             {
  21.                 
  22.                 string sHtml = utility.GetPageHTML("url" + i + ".html");
  23.                 Thread.Sleep(10);
  24.                 string sPattern = "href=/"(?<ProductURL>[^>]*)/"//sclass=black2//starget=_blank><strong>(?<ProductName>[^<]*)</strong>";
  25.                 MatchCollection matchs = Regex.Matches(sHtml, sPattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
  26.                 string sPattern1 = "<TD//sheight=/"20/"//sbgcolor=/"f8f8f8/"//sclass=/"black12/"><a//shref=/"(?<CompanyURL>[^>]*)/"//sclass=orange>(?<CompanyName>[^<]*)</a></TD>";
  27.                 MatchCollection matchs1 = Regex.Matches(sHtml, sPattern1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
  28.                 for (int j = 0; j < (matchs.Count > matchs1.Count ? matchs1.Count : matchs.Count); j++)
  29.                 {
  30.                     Model.pharmnetProduct productModel = new Model.pharmnetProduct();
  31.                     productModel.ProductName = matchs[j].Groups["ProductName"].Value;
  32.                     productModel.ProductURL = matchs[j].Groups["ProductURL"].Value;
  33.                     productModel.CompanyName = matchs1[j].Groups["CompanyName"].Value;
  34.                     productModel.CompanyURL = matchs1[j].Groups["CompanyURL"].Value;
  35.                     new BLL.pharmnetProduct().Add(productModel);
  36.                 }
  37.             }
  38.         }
  39.  public static string GetPageHTML(string url)
  40.     {
  41.         HttpWebRequest wr = WebRequest.Create(url) as HttpWebRequest;
  42.         try
  43.         {
  44.             wr.Method = "get";
  45.             wr.Accept = "*/*";
  46.             wr.Headers.Add("Accept-Language:   zh-cn");
  47.             wr.Headers.Add("UA-CPU:   x86");
  48.             wr.Headers.Add("Accept-Encoding:   gzip, deflate");
  49.             wr.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;  Embedded Web Browser from: http://bsalsa.com/; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
  50.             wr.KeepAlive = true;
  51.             wr.ServicePoint.Expect100Continue = false;
  52.             wr.AllowAutoRedirect = false;
  53.             HttpWebResponse wre = wr.GetResponse() as HttpWebResponse;
  54.             StreamReader sreader = new StreamReader(wre.GetResponseStream(), Encoding.Default);
  55.             string sHtml = sreader.ReadToEnd();
  56.             wre.Close();
  57.             return sHtml;
  58.         }
  59.         catch (Exception ex)
  60.         {
  61.             throw ex;
  62.         }
  63.     }