Получить исходный код какого-либо веб-сайта из кода asp.net

Есть ли способ получить источник веб-сайта (предпочтительно в виде строки), скажем, www.google.com, из некоторого кода С# внутри кода веб-сайта asp.net?

редактировать: конечно, я имею в виду html-код - в каждом браузере вы можете просмотреть его, используя "просмотр исходный код" в контекстном меню.


person agnieszka    schedule 22.12.2008    source источник
comment
Пожалуйста, уточните... вы пытаетесь получить исходный код веб-сайта или вы пытаетесь получить HTML-содержимое веб-сайта и самостоятельно проанализировать его на C#?   -  person Tom    schedule 22.12.2008


Ответы (3)


Предполагая, что вы хотите получить 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());
        }
    }
}
person Darin Dimitrov    schedule 22.12.2008

Для 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();
person Patrick Desjardins    schedule 22.12.2008

это не самый очевидный (и лучший) способ, но я обнаружил, что в формах Windows вы можете использовать элемент управления WebBrowser (если он вам действительно нужен), заполните его свойство Url нужным вам URL-адресом, а когда он загружен, прочитайте свойство DocumentText - содержит html-код просматриваемого сайта.

person agnieszka    schedule 23.12.2008