【发布时间】:2013-10-22 16:57:42
【问题描述】:
我需要捕获生成的 HTML 的图像。我在这里使用 Alex Filipovici 的出色解决方案:Convert HTML string to image。它工作得很好,除非我尝试加载具有使用某些 Javascript 加载的 iframe 的页面。
静态 int 宽度 = 1024; 静态 int 高度 = 768; 公共静态无效捕获() { 变量 html = @" "; 开始浏览器(html); } 私有静态无效StartBrowser(字符串源) { var th = 新线程(() => { var webBrowser = new WebBrowser(); webBrowser.Width = 宽度; webBrowser.Height = 高度; webBrowser.ScrollBarsEnabled = false; webBrowser.DocumentCompleted += webBrowser_DocumentCompleted; webBrowser.DocumentText = 源; 应用程序.运行(); }); th.SetApartmentState(ApartmentState.STA); th.Start(); } 静态无效 webBrowser_DocumentCompleted(对象发送者,WebBrowserDocumentCompletedEventArgs e) { var webBrowser = (WebBrowser)sender; 使用(位图位图 = 新位图(宽度,高度)) { webBrowser.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, width, height)); bitmap.Save(@"image.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } 应用程序.Exit(); }我知道可能没有明确的方法可以知道所有 javascript 是否已结束,iframe 加载的变幻莫测以及 DocumentCompleted get 的调用次数与帧/iframe + 1 一样多。我可以处理 iframe 加载有一个计数器或其他东西,但我想要的是一个合理的延迟,所以加载了 javascript,我没有得到像这样的“加载”的图像:http://imgur.com/FiFMTmm
【问题讨论】:
标签: c# .net winforms web-scraping webbrowser-control