c# 获取网页源码
C#获取指定网页HTML原代码可使用 WebClient WebRequest HttpWebRequest 三种方式来实现。
当然也可使用webBrowse!在此就不研究webBrowse如何获取了。
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;} | 
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;} | 
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 就没问题。
源码下载:http://files.cnblogs.com/zjfree/GetHTML.rar
测试环境:WIN2003 + VS2005 + C# + winForm
欢迎转载,转载请注明:转载自[ http://www.cnblogs.com/zjfree/ ]
c# 获取网页源码的更多相关文章
- C语言之socket获取网页源码
		
写爬虫也许你用的是python,类似urlopen(url).read()即可获得普通的网页的源码,或者用的java的网络库加上流操作,或者其他高级语言.但你有没有想过使用C语言来实现呢?我曾经以为用 ...
 - QT:轻松获取网页源码
		
获取网页源码的小例子,代码很简单,就不多作解释了. 不过一定要注意网页的编码问题,否则会出现乱码的!!! #include <QtCore> #include <QtNetwork& ...
 - Python爬虫学习之获取网页源码
		
偶然的机会,在知乎上看到一个有关爬虫的话题<利用爬虫技术能做到哪些很酷很有趣很有用的事情?>,因为强烈的好奇心和觉得会写爬虫是一件高大上的事情,所以就对爬虫产生了兴趣. 关于网络爬虫的定义 ...
 - vc++获取网页源码
		
1. 获取网页源码的步骤: com组件的初始化 创建WinHttpRequest对象 创建并实例化WinHttpRequest组件 调用Open方法打开连接 调用Send方法发送请求 使用Respon ...
 - vc++获取网页源码之使用import+接口方式
		
1.使用IWinHttpRequest获取网页源码 首先要创建基于对话框的mfc应用程序 2.import+接口方式 首先导入winhttp.dll,使用IWinHttpRequest接口 #impo ...
 - 高效获取网页源码COM
		
目前获取网页源码有几种方法: 1.WebClient下载页面2.HttpWebRequest发请求获取3.com组件xmlhttp获取 三者比较:WebClient代码最少,效率最慢:xmlhttp代 ...
 - Python3 Selenium WebDriver网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
		
Python3 Selenium WebDriver网页的前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 通过selenium webdr ...
 - Python3.x获取网页源码
		
Python3.x获取网页源码 1,获取网页的头部信息以确定网页的编码方式: import urllib.request res = urllib.request.urlopen('http://ww ...
 - c#  HttpClient获取网页源码
		
#region 获取网页源码 public static string HttpClientGetHtmls(string url) { try { var client = new HttpClie ...
 - Selenium WebDriver-网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
		
通过selenium webdriver操作网页前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 from selenium import ...
 
随机推荐
- 手动添加jar包到maven
			
废话不说,先上图,后说明: 1.登录系统 2.跟着箭头和方框走,一直到 Select Artifact(s) to Upload... 按钮 3.点击Select Artifact(s) to Upl ...
 - hdfs 机架感知和复制因子的设置
			
dfs.replication 新更新的复制因子的参数对原来的文件不起作用. 譬如说,原来的复制因子是2,则原来文件上传的时候就只有两个副本. 现在把dfs.replication设置为3,重新启动h ...
 - CF722D. Generating Sets[贪心 STL]
			
D. Generating Sets time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
 - AC日记——大小写字母互换 openjudge 1.7 14
			
14:大小写字母互换 总时间限制: 1000ms 内存限制: 65536kB 描述 把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母. 输入 输入一行:待互换的字符串 ...
 - java 22 - 15 死锁的问题
			
同步的弊端: A:效率低 B:容易产生死锁 死锁: 两个或两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象. 举例: 中国人,美国人一起吃饭. 正常情况: 中国人:筷子两支 美国人: ...
 - angular留言板
			
今天使用angularJs写了一个留言板,简单的享受了下angular处理数据的双向绑定的方便:注释已经都写到行间了 <!DOCTYPE html> <html lang=" ...
 - Memcache基本使用
			
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调用到内 ...
 - Kali linux渗透测试常用工具汇总2-渗透攻击
			
渗透攻击的思路一般是扫描漏洞,然后利用不同的漏洞,才有针对的渗透攻击. 漏洞扫描的工具有Nessus,该工具可同时在本地或远端遥控,对系统的漏洞分析扫描.Nessus通过新建扫描策略,并添加对应的插件 ...
 - Centos6 修改max user processes limits
			
ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何 ...
 - MySQL数据库集群进行正确配置步骤
			
MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...