2013-04-12 20 views
11

ASP.NET ve C# projesinin bir parçasıyım. Asp.net portalı Google arama motorunu dostça yapmaya çalışıyoruz (https://developers.google.com/webmasters/ajax-crawling/). Sitemizdeki web sayfaları dinamik olarak oluşturulur ve DOM, JavaScript ile değiştirilir. Böylece, Google arama motoru isteği gönderdiğinde anlık görüntü (Sunucu tarafı) oluşturmak için NHTML kullanırız. HTML anlık görüntüsünü oluşturur, ancak sorun sayfada bir komut dosyası hatası olduğunda, kısmen oluşturulmuş sayfayı döndürür (sayfa tarafından değiştirilen içerik kısmen işlenir). Sayfalar tarayıcılarda mükemmel çalışır. NHTMLUNIT'i Sayfa Yığını Yoksaymaya ve Script Yürütülmesine Devam Etmeye zorlamanın bir yolu var mı?

Ben aşağıdaki seçenekleri
ThrowExceptionOnScriptError = false, 
ThrowExceptionOnFailingStatusCode = false 

Ama hiçbir ŞANS çalıştı.

NHtmlUnit'i sayfa hatalarını yok saymaya ve yürütmeye devam etmeye zorlamanın bir yolu var mı?

aşağıdaki

ben yanılıyorsam üzgün, JavaScript etkinleştirmedim fark kodu

// Create a webclient. 
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17) 
     { 
      ThrowExceptionOnScriptError = false, 
      ThrowExceptionOnFailingStatusCode = false 
     }; 

    webClient.WaitForBackgroundJavaScript(5000); 

    // Load the Page with the given URL. 
    HtmlPage htmlPage = webClient.GetHtmlPage(url); 

    // Return the page for the given URL as Text. 
    return htmlPage.WebResponse.ContentAsString; 

cevap

5
// Create a webclient. 
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17) 
    { 
     JavaScriptEnabled = true 
     ThrowExceptionOnScriptError = false, 
     ThrowExceptionOnFailingStatusCode = false, 
    }; 

webClient.WaitForBackgroundJavaScript(5000); 

HtmlPage htmlPage = webClient.GetHtmlPage(url); 

// Return the page for the given URL as Text. 
return htmlPage.WebResponse.ContentAsString; 

olduğunu.

+0

@ RAM'in durumunu bilmiyorum, ancak benimki etkin. Şey, başsız bir tarayıcı içinde çalıştığı için jQuery sorunları yerine [N] HtmlUnit sorun olduğundan emin değilim. HtmlUnit'in sunmadığı bir şey (pencere nesnesi veya Tarayıcı'nın sağlayacağı başka bir şey) bağlı olabilir. – Allov

+0

Evet JavaScript'i etkinleştirdim. Sayfadaki JavaScript kodu, NHTMLUNIT'in çalışmayı durdurmasına neden olan bir istisna oluşturuyor, böylece sayfa kısmen oluşturuluyor. Aynı JavaScript, Tarayıcılarda çalışır ve tam sayfayı oluşturur. – RAM

İlgili konular