public override async Task ProcessAsync(ICrawler crawler, PropertyBag propertyBag) { AspectF.Define. NotNull(crawler, "crawler"). NotNull(propertyBag, "propertyBag"); if (propertyBag.StatusCode != HttpStatusCode.OK) { return; } if (!IsHtmlContent(propertyBag.ContentType)) { return; } var documentDomHtml = string.Empty; var tempThread = new Thread(o => { using (var internetExplorer = new TridentBrowserForm(propertyBag.ResponseUri.ToString())) { Application.Run(internetExplorer); documentDomHtml = internetExplorer.DocumentDomHtml; } }); tempThread.SetApartmentState(ApartmentState.STA); tempThread.Start(); tempThread.Join(); propertyBag.GetResponse = () => new MemoryStream(Encoding.UTF8.GetBytes(documentDomHtml)); await base.ProcessAsync(crawler, propertyBag).ConfigureAwait(false); }
public override void Process(Crawler crawler, PropertyBag propertyBag) { AspectF.Define. NotNull(crawler, "crawler"). NotNull(propertyBag, "propertyBag"); if (propertyBag.StatusCode != HttpStatusCode.OK) { return; } if (!IsHtmlContent(propertyBag.ContentType)) { return; } string documentDomHtml = string.Empty; Thread tempThread = new Thread(o => { using (TridentBrowserForm internetExplorer = new TridentBrowserForm(propertyBag.ResponseUri.ToString())) { Application.Run(internetExplorer); documentDomHtml = internetExplorer.DocumentDomHtml; } }); tempThread.SetApartmentState(ApartmentState.STA); tempThread.Start(); tempThread.Join(); propertyBag.GetResponse = () => new MemoryStream(Encoding.UTF8.GetBytes(documentDomHtml)); base.Process(crawler, propertyBag); }