从asp.net代码获取一些网站的来源

时间:2008-12-22 12:49:44

标签: c# asp.net-2.0

有没有什么方法可以获得网站的来源(最好是一个字符串),比如www.google.com,从asp.net网站代码中的一些c#代码开始?

编辑:我当然是指html代码 - 在每个浏览器中,您都可以在上下文菜单中使用“view source ”查看它。

3 个答案:

答案 0 :(得分:8)

假设您要检索html:

class Program
{
    static void Main(string[] args)
    {
        using (WebClient client = new WebClient())
        using (Stream stream = client.OpenRead("http://www.google.com"))
        using (StreamReader reader = new StreamReader(stream))
        {
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}

答案 1 :(得分:5)

对于C#,我更喜欢使用HttpWebRequest而不是WebClient,因为将来可以使用GET / POST参数,使用Cookie等更多选项。

您可以在MSDN进行最短的解释。

以下是MSDN的示例:

        // Create a new HttpWebRequest object.
        HttpWebRequest request=(HttpWebRequest) WebRequest.Create("http://www.contoso.com/example.aspx");    

        // Set the ContentType property. 
        request.ContentType="application/x-www-form-urlencoded";
        // Set the Method property to 'POST' to post data to the URI.
        request.Method = "POST";
        // Start the asynchronous operation.    
        request.BeginGetRequestStream(new AsyncCallback(ReadCallback), request);    

        // Keep the main thread from continuing while the asynchronous
        // operation completes. A real world application
        // could do something useful such as updating its user interface. 
        allDone.WaitOne();

        // Get the response.
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream streamResponse = response.GetResponseStream();
        StreamReader streamRead = new StreamReader(streamResponse);
        string responseString = streamRead.ReadToEnd();
        Console.WriteLine(responseString);
        // Close the stream object.
        streamResponse.Close();
        streamRead.Close();

        // Release the HttpWebResponse.
        response.Close();

答案 2 :(得分:0)

这不是最明显(也是最好)的方式,但我发现在Windows窗体中你可以使用WebBrowser控件(如果你真的需要它),用你需要的url填充它的Url属性,当它加载时,读取DocumentText属性 - 它包含所查看站点的html代码。