利用C#.NET開發採集工具

思路:

1、使用C#中的WebRequest或HttpWebRequest創建WEB實例訪問網頁,或使用WebClient訪問頁面。

2、通過正則表達式匹配字符串獲取要採集的數據。

3、簡單運算得出要採集的字符串。

使用WebRequest函數的C#採集器實例代碼如下(精簡):
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.IO;
  9. using System.Net;
  10. using System.Text.RegularExpressions;

  11.         private void button2_Click(object sender, EventArgs e) //單擊按鈕操作
  12.         {
  13.             WebRequest req = WebRequest.Create("http://www.baidu.com/");
  14.             WebResponse result = req.GetResponse();
  15.             //Stream s = result.GetResponseStream();
  16.             StreamReader sr = new StreamReader(result.GetResponseStream(),System.Text.Encoding.GetEncoding("gb2312"));  //創建流讀取器並設置編碼
  17.             string content = sr.ReadToEnd();  //讀取所有字符串至變量content
  18.             string startString = "<title>";  //定義開始字符串
  19.             string endString = "</title>";   //定義結束字符串
  20.             string title = "";  //定義最終要採集的字符串變量
  21.             Regex sTitle = new Regex(startString);  //定義開始字符串的與此同時表達式
  22.             Regex eTitle = new Regex(endString);  //定義結束字符串的與此同時表達式

  23.             Match sm = sTitle.Match(content);  //匹配開始字符串
  24.             Match em = eTitle.Match(content);  //匹配結束字符串
  25.             if (sm.Success&em.Success)
  26.             {
  27.                 title = content.Substring(sm.Index + startString.Length, em.Index-sm.Index-startString.Length);  //運算得出要採集的字符串
  28.                 MessageBox.Show(title.Trim());

  29.             }

  30.         }
複製代碼
下面是完整採集代碼:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.IO;
  9. using System.Net;
  10. using System.Text.RegularExpressions;

  11.         private void button2_Click(object sender, EventArgs e)
  12.         {
  13.             WebRequest req = WebRequest.Create("http://www.baidu.com/");
  14.             WebResponse result = req.GetResponse();
  15.             StreamReader sr = new StreamReader(result.GetResponseStream(),System.Text.Encoding.GetEncoding("gb2312"));
  16.             string content = sr.ReadToEnd();
  17.             richTextBox1.Text = content;
  18.             string startString = "<title>";
  19.             string endString = "</title>";
  20.             string title = "";
  21.             Regex sTitle = new Regex(startString);
  22.             Regex eTitle = new Regex(endString);
  23.             Match sm = sTitle.Match(content);
  24.             Match em = eTitle.Match(content);
  25.             if (sm.Success&em.Success)
  26.             {
  27.                 title = content.Substring(sm.Index + startString.Length, em.Index-sm.Index-startString.Length);
  28.                 MessageBox.Show(title.Trim());
  29.                 //string abc = "wocaonima";
  30.                 //MessageBox.Show(abc.Substring(1,2));
  31.             }

  32.         }
複製代碼
另外一種方法是使用WebClient採集,精簡代碼如下:
  1. using System.Net;

  2. ....

  3. WebClient client = new WebClient();

  4. string result = client.DownloadString(http://www.baidu.com/);

  5. ...
複製代碼
然後使用正則表達式來匹配採集字符串。
posted @ 2010-01-21 12:29  海军  阅读(280)  评论(0编辑  收藏  举报