Ich habe diesen page verwendet, um den folgenden Code zu erstellen. Mein Ziel ist es, den vollständigen HTML-Code einer Webseite zu erhalten, nachdem alle Skripte geladen wurden. Dieser Code wird von einer asp.net MVC-Website ausgeführt - keine Winforms-App.Den vollständigen HTML-Code von einer Webseite abrufen, nachdem alle Skripts ausgeführt wurden
private void GetHtmlTest()
{
string url = "http://www.bicesteradvertiser.net/sport/13951060.Michael_Appleton_ready_to_make_decision_on_Jake_Wright_participation/";
Thread thread = new Thread(delegate()
{
using (WebBrowser browser = new WebBrowser())
{
browser.ScrollBarsEnabled = false;
browser.AllowNavigation = true;
browser.Navigate(url);
browser.Width = 1024;
browser.Height = 4768;
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Ggg_DocumentCompleted);
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
}
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
string test = "";
}
private void Ggg_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser webBrowser = (WebBrowser)sender;
if (webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
return;
}
_html = webBrowser.Document.Body.OuterHtml;
_testHtmlDocument = webBrowser.Document;
_htmlElement = webBrowser.Document.GetElementsByTagName("html")[0];
var ggg = webBrowser.Document.GetElementsByTagName("HTML")[0].OuterHtml;
WebBrowser browser = sender as WebBrowser;
using (Bitmap bitmap = new Bitmap(browser.Width, browser.Height))
{
browser.DrawToBitmap(bitmap, new Rectangle(0, 0, browser.Width, browser.Height));
using (MemoryStream stream = new MemoryStream())
{
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte[] bytes = stream.ToArray();
File.WriteAllBytes("c:\\temp\\img.bmp",bytes);
//imgScreenShot.Visible = true;
//imgScreenShot.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(bytes);
}
}
}
Die oben wird eine Bitmap der Website erfolgreich erstellen - alle Skripten für die Bitmap-Generation geladen. Ich möchte jedoch keine Bitmap - ich möchte das HTML. Sie können meine letzten Versuche sehen, den HTML-Code direkt über dem Bitmap-Code zu erhalten. Das HTML enthält immer etwas Javascript, nur die Hälfte der Seite wird als HTML zurückgegeben.
Kann jemand sehen, wo ich hier falsch liege? Ich stecke jetzt seit 2 Tagen fest!
Überprüfen Sie [diese] (http://stackoverflow.com/a/20934538) und [diese] (http://stackoverflow.com/a/21828265). – Noseratio