使用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