欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用C# Winform应用程序获取网页源文件的解决方法

程序员文章站 2023-12-20 22:58:40
在c# winform 应用程序中,获取某网页的源文件,可以用以下方法: 首先引入名称空间 using system.io; using system.net;...

在c# winform 应用程序中,获取某网页的源文件,可以用以下方法:

首先引入名称空间
using system.io;
using system.net;

webclient mywebclient = new webclient();
                 
mywebclient.credentials = credentialcache.defaultcredentials;//获取或设置用于向internet资源的请求进行身份验证的网络凭据
byte[] pagedata = mywebclient.downloaddata("http://www.baidu.com");
//string pagehtml = encoding.default.getstring(pagedata); 
 filestream file = new filestream("c:\\test.html", filemode.create);
 file.write(pagedata, 0, pagedata.length);

附,c# 获取网页源码的代码举例。
c# 获取指定网页html原代码可使用:webclient webrequest httpwebrequest 三种方式。
当然也可使用webbrowse,有兴趣的朋友,可以自己研究下。

1,webclient方式

private string getwebclient(string url)
{
  string strhtml = "";
  webclient mywebclient = new webclient();
  stream mystream = mywebclient.openread(url);
  streamreader sr = new streamreader(mystream, system.text.encoding.getencoding("utf-8"));
  strhtml = sr.readtoend();
  mystream.close();
  return strhtml;
}

2,webrequest方式

private string getwebrequest(string url)
{
  uri uri = new uri(url);
  webrequest myreq = webrequest.create(uri);
  webresponse result = myreq.getresponse();
  stream recevicestream = result.getresponsestream();
  streamreader readerofstream = new streamreader(recevicestream, system.text.encoding.getencoding("utf-8"));
  string strhtml = readerofstream.readtoend();
  readerofstream.close();
  recevicestream.close();
  result.close();
  return strhtml;
}

3,httpwebrequest方式

private string gethttpwebrequest(string url)
{
  uri uri = new uri(url);
  httpwebrequest myreq = (httpwebrequest)webrequest.create(uri);
  myreq.useragent = "user-agent:mozilla/4.0 (compatible; msie 6.0; windows nt 5.2; .net clr 1.0.3705";
  myreq.accept = "*/*";
  myreq.keepalive = true;
  myreq.headers.add("accept-language", "zh-cn,en-us;q=0.5");
  httpwebresponse result = (httpwebresponse)myreq.getresponse();
  stream recevicestream = result.getresponsestream();
  streamreader readerofstream = new streamreader(recevicestream, system.text.encoding.getencoding("utf-8"));
  string strhtml = readerofstream.readtoend();
  readerofstream.close();
  recevicestream.close();
  result.close();
  return strhtml;
}

注意:“utf-8”应与指定网页的编码对应。
总结
httpwebrequest 方式最复杂,但确提供了更多的选择性。
有的网站检测客户端的useragent!如163.com,如果使用webclient webrequest方式获取,将获取到的是错误提示页面的内容。
httpwebrequest没有这个问题。
测试环境:win2003 + vs2005 + c# + winform

上一篇:

下一篇: