C#获取网页内容的三种方式

C#通常有三种方法获取网页内容,使用WebClient、WebBrowser或者HttpWebRequest/HttpWebResponse。。。

方法一:使用WebClient (引用自:http://fbljava.blog.163.com/blog/static/265211742008712105145244/

static void Main(string[] args)

{

try {

WebClient MyWebClient = new WebClient();

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

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

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

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

Console.WriteLine(pageHtml);//在控制台输入获取的内容

using (StreamWriter sw = new StreamWriter("c:\\test\\ouput.html"))//将获取的内容写入文本

{

sw.Write(pageHtml);

}

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

}

catch(WebException webEx) {

Console.WriteLine(webEx.Message.ToString());

}

}

方法二:使用WebBrowser (引用自:http://topic.csdn.net/u/20091225/14/4ea221cd-4c1e-4931-a6db-1fd4ee7398ef.html

WebBrowser web = new WebBrowser(); 
web.Navigate("http://www.xjflcp.com/ssc/"); 
web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted); 
void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
        { 
            WebBrowser web = (WebBrowser)sender; 
            HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName("Table"); 
            foreach (HtmlElement item in ElementCollection) 
            { 
                 File.AppendAllText("Kaijiang_xj.txt", item.InnerText); 
            } 
        }

方法三:使用HttpWebRequest/HttpWebResponse (引用自:http://hi.baidu.com/onlyafar/blog/item/7ac4c6bf92d4810019d81f98.html

HttpWebRequest httpReq; 
HttpWebResponse httpResp;

string strBuff = ""; 
char[] cbuffer = new char[256]; 
int byteRead = 0;

string filename = @"c:\log.txt"; 
///定义写入流操作 
public void WriteStream() 

Uri httpURL = new Uri(txtURL.Text);

///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换 
      httpReq = (HttpWebRequest)WebRequest.Create(httpURL); 
///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换

httpResp = (HttpWebResponse) httpReq.GetResponse(); 
///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容

///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理 
Stream respStream = httpResp.GetResponseStream();

///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以

StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8) 
StreamReader respStreamReader = new StreamReader(respStream,Encoding.UTF8);

byteRead = respStreamReader.Read(cbuffer,0,256);

while (byteRead != 0) 

string strResp = new string(cbuffer,0,byteRead); 
                  strBuff = strBuff + strResp; 
                  byteRead = respStreamReader.Read(cbuffer,0,256); 
}

respStream.Close(); 
txtHTML.Text = strBuff; 
}

时间: 2024-10-09 08:21:48

C#获取网页内容的三种方式的相关文章

【Struts2】Struts2获取session的三种方式

1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = ServletActionContext.getRequest().getSession(); 3.让Action实现SessionAware接口,并实现public void setSession(Map<String, Object> session) {} 方法,Struts2会在实例化Act

5.struts2中Action类中获取ServletAPI的三种方式

**Servlet的API的访问(开发中偶尔会使用到)** 1.在Action类中也可以获取到Servlet一些常用的API,有如下三种方式获取 * 完全解耦合的方式 * 使用接口注入的方式 * 使用ServletActionContext中静态方法直接访问Servlet的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上. * 提供JSP注册的页面,演示下面这三种方式: <h3>注册页面</

CXF3.0.4客户端调用Web service来获取服务的三种方式

服务端的代码请看我的另一篇文章:点击打开链接 首先必须要有一个可用的WSDL服务地址,这个地址有我们需要调用的方法,将地址复制到浏览器地址栏,看测试能否通过. 方式一: 配置CXF环境变量,用wsdl2java工具自动产生代码.项目结构目录如下: 其中com.yq.webservice下面的所有的java类都是wsdl2java工具自动产生的. <span style="font-size:18px;"><span style="white-space:pr

jQuery中通过JSONP来跨域获取数据的三种方式

第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({ dataType: 'jsonp', url: 'http://www.a.com/user?id=123', success: function(data){ //处理data数据 } }); 第二种方法是利用getJSON来实现,只要在地址中加上callback=?参数即可 $.getJSON('http://www.a.com/user?id=123&callback=?', function(data){

android 自定义控件中获取属性的三种方式(转)

第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 <com.example.activity.IconTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/smile1" iconSrc="

java之从命令行获取数据的三种方式

第一种:利用Scanner对象 import java.util.Scanner; public class TestInputOuput { public static void main(String[] args) { System.out.println("请输入:"); Scanner inp = new Scanner(System.in); String str = inp.next(); System.out.println("你输入了:"+str)

pictrue获取图片的三种方式

1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupPath;  可以得到程序根目录  this.pictureBox2.Image=Image.FromFile(Application.StartupPath "\\1.gif"); 3.获得网络图片的路径 this.pictureBox2.Image= Image.FromStream(S

获取时间戳的三种方式

console.log(new Date().getTime()); console.log(new Date().valueOf()); console.log(+new Date()); console.log(Date.now()); 原文地址:https://www.cnblogs.com/ustc-yy/p/12074499.html

Java Class类以及获取Class实例的三种方式

T - 由此 Class 对象建模的类的类型.例如,String.class 的类型是Class<String>.如果将被建模的类未知,则使用Class<?>. [java] view plain copy print? public final class Class<T> extends Object  implements java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.r