Получить HTML-источник текущей страницы в C # Windows Forms App - PullRequest
3 голосов
/ 20 октября 2011

Я работаю над созданием надстройки для Internet Explorer с использованием BandOjects и приложения C # Windows Forms и тестирую парсинг исходного кода HTML.В настоящее время я выполняю синтаксический анализ информации на основе URL-адреса сайта.

Я хотел бы получить исходный HTML-код текущей страницы примера моего сайта, который использует логин.если я использую URL-адрес страницы, на которой я нахожусь, она всегда будет захватывать источник страницы входа, а не саму страницу, поскольку мое приложение не распознает, что я вошел в систему. Нужно ли мне сохранять учетные данные для входа в систему?сайт использует какой-то API?или есть способ получить текущую страницу HTML независимо?Я бы предпочел последнее, так как казалось бы меньше проблем.Спасибо!

1 Ответ

3 голосов
/ 20 октября 2011

Я использую этот метод в одном из моих приложений:

private static string RetrieveData(string url)
    {

        // used to build entire input
        var sb = new StringBuilder();

        // used on each read operation
        var buf = new byte[8192];
        try
        {
            // prepare the web page we will be asking for
            var request = (HttpWebRequest)
                                     WebRequest.Create(url);

           /* Using the proxy class to access the site
            * Uri proxyURI = new Uri("http://proxy.com:80");
            request.Proxy = new WebProxy(proxyURI);
            request.Proxy.Credentials = new NetworkCredential("proxyuser", "proxypassword");*/

            // execute the request
            var response = (HttpWebResponse)
                                       request.GetResponse();

            // we will read data via the response stream
            Stream resStream = response.GetResponseStream();

            string tempString = null;
            int count = 0;

            do
            {
                // fill the buffer with data
                count = resStream.Read(buf, 0, buf.Length);

                // make sure we read some data
                if (count != 0)
                {
                    // translate from bytes to ASCII text
                    tempString = Encoding.ASCII.GetString(buf, 0, count);

                    // continue building the string
                    sb.Append(tempString);
                }
            } while (count > 0); // any more data to read?

        }
        catch(Exception exception)
        {
            MessageBox.Show(@"Failed to retrieve data from the network. Please check you internet connection: " +
                            exception);
        }
        return sb.ToString();
    }

Вам нужно просто передать URL веб-страницы, для которой вам нужно получить код.

Например:

string htmlSourceGoggle = RetrieveData("www.google.com") 

Примечание. Если прокси-сервер используется для доступа к Интернету, прокомментировать конфигурацию прокси можно без комментариев. Замените адрес прокси, имя пользователя и пароль на тот, который вы используете.

Для входа через код. проверьте это: Войдите на сайт, используя C #

...