Получить исходный код какого-либо сайта из кода asp.net - PullRequest
4 голосов
/ 22 декабря 2008

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

edit: конечно, я имею в виду HTML-код - в каждом браузере вы можете просмотреть его, используя «view source » в контекстном меню.

Ответы [ 3 ]

8 голосов
/ 22 декабря 2008

Если вы хотите получить 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());
        }
    }
}
5 голосов
/ 22 декабря 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();
0 голосов
/ 23 декабря 2008

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

...