2015-06-05 4 views
1

Я хочу получить HTML-источник для анализа веб-страницы. Итак, я использую такой код:Awesomium - Как я могу получить HTML-источник с набором фреймов

(Work.URL просто строка переменной в структуре)

Dim View As WebView = WebCore.CreateWebView(1000, 600, WebCore.Sessions.Last()) 
View.Source = New Uri(Work.URL) 

AddHandler View.LoadingFrameComplete, Sub(sender As Object, e As FrameEventArgs) 
    If Not e.IsMainFrame Then Exit Sub 
    Console.WriteLine(View.HTML) 
End Sub 

Код хорошо работает. И образец Результат:

<!doctype html> 
<html> 
    <head> 
     ... 
    </head> 
    <frameset cols="*,*"> 
     <frame src="test1.html" /> 
     <frame src="test2.html" /> 
    </frameset> 
</html> 

Но я хочу, чтобы получить источник HTML в фрейме, как это:

(как Chrome Developer Tool)

<!doctype html> 
<html> 
    <head> 
     ... 
    </head> 
    <frameset cols="*,*"> 
     <frame src="test1.html"> 
      <!doctype html> 
      <html> 
       <head> 
        ... 
       </head> 
       <body> 
        This page is TEST1. 
       </body> 
      </html> 
     </frame> 
     <frame src="test2.html"> 
      <!doctype html> 
      <html> 
       <head> 
        ... 
       </head> 
       <body> 
        This page is TEST2. 
       </body> 
      </html> 
     </frame> 
    </frameset> 
</html> 

Как я могу получить источник HTML?

+0

Зачем вам Awesomium «получать HTML-источник для анализа веб-страницы»? – voytek

+0

@voytek Я хочу проверить, что на этой странице есть медиа, например YouTube, Vimeo. – WebEngine

+0

И получить соотношение тегов HTML, таких как «: 15%» – WebEngine

ответ

1

Это один из способов получить исходный код:

string source = webControl.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].innerHTML"); 

или .. Вы можете попробовать это

string source = webControl.HTML; 

EDIT: помнить при использовании webControl.HTML, вам нужно подождать, пока загружается документ: DocumentReadyState.Loaded

0

Это встроенная функция, которая дает вам статический html-код, который был установлен при загрузке страницы. Время для этого является crutial:

webControl.HTML; 

Эта функция использует JavaScript, чтобы получить реальный, динамический исходный код страницы. Это то, что вы увидите в FireBug:

webControl.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].innerHTML"); 

Я предпочитаю:

form.webControl.ExecuteJavascriptWithResult("document.documentElement.outerHTML"); 

Я также читал, что они работают на свойстве «источник», скрывающие вопросы синхронизации и, надеюсь, дадут реальный html.

Смежные вопросы