Очистка динамического веб-контента в C # - PullRequest
1 голос
/ 05 июня 2011

Можно ли очистить данные, генерируемые динамической веб-страницей?Я имею в виду, например, Этот веб-сайт генерирует тег <font> с некоторым Java-скриптом, который

document.write("<font class=spy2>:<\/font>"+(v2j0j0^o5r8)+(r8d4x4^y5i9)+(b2r8e5^u1p6)+(r8d4x4^y5i9))

Значения меняются при каждом обновлении страницы.Каждый сгенерированный код представляет число от 0 до 9, например, (code1)+(code2)+(code3)+(code4), и на заднем конце написан какой-то синтаксический анализатор, который понимает его и генерирует числа соответственно.

Как только страница отображается и, например,code1 было установлено где-то, где для цифры 4, где всегда генерируется цифра 4, она берется из этого кода после анализа.

Если мы используем HtmlAgilityPack, мы видим, что код сценария Java, но не его сгенерированный вывод,Есть ли способ, которым мы можем прочитать тег, который он создает при визуализации страницы?

Ответы [ 2 ]

0 голосов
/ 05 июня 2011

Я думаю, вы должны каким-то образом использовать IE движок.

0 голосов
/ 05 июня 2011

Спасибо за указание. Я увидел это, внедрив одни и те же результаты, но затем взглянул на еще один комментарий, в котором говорится, что я использую движок IE. прочитайте содержание. Вот код

 private void webBrowser1_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
        {
  System.Windows.Forms.HtmlElementCollection elementsforViewPost =
                                webBrowser1.Document.GetElementsByTagName("font");
  foreach (System.Windows.Forms.HtmlElement current2 in elementsforViewPost)
  {
  if (current2.InnerText != null && CheckForValidProxyAddress(current2.InnerText) &&
                    ObtainedProxies.Where(index=>index.ProxyAddress == current2.InnerText.Trim()).ToList().Count == 0)
 {
   Proxy data = new Proxy();
   data.IsRetired = false;
   data.IsActive = true;
   int result = 1;                   

   data.DomainsVisited = 0;
   data.ProxyAddress = current2.InnerText.Trim();

   ObtainedProxies.Add(data);
}

и для проверки того, что полученный текст является действительным прокси-сервером, вот что я сделал с некоторой страницы давным-давно путем поиска в Google

  private bool CheckForValidProxyAddress(string address)
        {

        //create our match pattern
        //string pattern = @"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$:([0-9][0-9][0-9][0-9])";
        string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b\:[0-9]{0,4}";
        //create our Regular Expression object
        Regex check = new Regex(pattern);
        //boolean variable to hold the status
        bool valid = false;
        //check to make sure an ip address was provided
        if (address == "")
        {
            //no address provided so return false
            valid = false;
        }
        else
        {
            //address provided so use the IsMatch Method
            //of the Regular Expression object
            valid = check.IsMatch(address, 0);
        }
        //return the results
        return valid;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...