захватить HTML-страницу, отображаемую в браузере, используя HTMLAgility - PullRequest
2 голосов
/ 13 июля 2011

Я хочу знать методы захвата html-контента, который отображается в веб-браузере в приложении C #. Я изначально использовал HTML Agility Pack. если мои знания верны, моя кодировка ниже

htmlWeb hw = new HtmlWeb();
        if (txtCurrentURL.Text == "")
        {

            MessageBox.Show(" Enter Web Address to Process ");
        }
        else
        {
            HtmlAgilityPack.HtmlDocument htmlDoc = hw.Load(@txtCurrentURL.Text);
            if (htmlDoc.DocumentNode != null)
            {
            try
            { foreach (HtmlNode text in htmlDoc.DocumentNode.SelectNodes(txtExpression.Text))
                    {
                        _items.Add(text.InnerHtml);
                        richTextResults.Text = text.InnerHtml;
                    } }

              catch
              {   MessageBox.Show(" No Usefull Data found");
              }
                  lstBxResult.DataSource = _items;
            }
        }

и txtCurrentUR.Text - это URL-адрес, отображаемый в текущем браузере.

Если я не ошибаюсь, Результат от HTMLAgility - это результат, который мы получили, подключившись к указанному URL с помощью класса HTMLagility, а не получив доступ к Содержанию веб-сервера, я прав? , Поэтому моя проблема заключается в том, что если для страницы требуется какой-либо вход в систему или доступ к страницам только после входа в систему, например входящие, на странице учетной записи пользователя в Agility не отображается ошибка. но сейчас мы видим, что в веб-браузере мы можем легко их отображать, и я хочу захватывать данные, которые отображаются в браузере, а не путем подключения URl, и захватывать данные с помощью Agility ... но я не знаю, как это сделать, пожалуйста помогите мне ??

1 Ответ

1 голос
/ 02 октября 2011

Если я правильно понимаю, то, что вы собираетесь использовать, это коллекция Cookies.

private HtmlWeb CreateWebRequestObject()
{
    HtmlWeb web = new HtmlWeb();
    web.UseCookies = true;
    web.PreRequest = new HtmlWeb.PreRequestHandler(PreRequestStuff);
    web.PostResponse = new HtmlWeb.PostResponseHandler(AfterResponseStuff);
    web.PreHandleDocument = new HtmlWeb.PreHandleDocumentHandler(PreHandleDocumentStuff);
    return web;
}
...