日期:2014-05-18  浏览次数:21130 次

关于截取网页内容的问题
try
  {

   

  WebClient MyWebClient = new WebClient();

  MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。

  Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com");//从指定网站下载数据

  //string pageHtml = Encoding.Default.GetString(pageData); //如果获取网站页面采用的是GB2312,则使用这句  

  string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句


  richTextBox1.Text = pageHtml;//在控制台输入获取的内容

  //将获取的内容写入文本

  //Console.ReadLine(); //让控制台暂停,否则一闪而过了  
  }

  catch (WebException webEx)
  {
  richTextBox1.Text = webEx.Message.ToString();
  }


各位大侠,这是我截取网页内容的代码,可以截取网页代码。但是执行时非常慢,而且很卡,用起来非常不方便,点击按钮截取时还不能拖动软件,有没有好点的方法使他又快又不卡。
再麻烦下用正则表达式把网页内容截取到文本框里,我是菜鸟,谢谢大家了

再说明下, 我截取的是UTF8编码的网页

------解决方案--------------------
class Form1
{
static void ChangeControlValues<T>(T control, Action<T> action) where T : Control
{
if (control.InvokeRequired)
{
control.Invoke(action, control);
}
else
{
action(control);
}
}
  
private void Btn_Click(object sender,EventArgs e)
{
Btn.Enable=false;
Thread td=new Thread(_=>{
try

WebClient MyWebClient = new WebClient();

MyWebClient.Credentials = CredentialCache.DefaultCredentials;

Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com");

string pageHtml = Encoding.UTF8.GetString(pageData); 
ChangeControlValues(richTextBox1,r=>{r.Text=pageHtml;});
}
catch (WebException webEx)
{
ChangeControlValues(richTextBox1,r=>{r.Text=webEx.Message.ToString();});
}
finally
{
ChangeControlValues(Btn,b=>{b.Enable=true;});
}
},null);
td.Start();
}
}