关于截取网页内容的问题
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();
}
}