C# 当ScrapySharp导航到页面时,继续卡住加载
当使用scrapysharp浏览网页时,我的浏览器一直在加载,不会转到下一行代码。下面是我使用c#asp.net web表单的代码。我可以知道为什么吗?我使用的链接正在工作,可以手动浏览。代码只是停留在C# 当ScrapySharp导航到页面时,继续卡住加载,c#,asp.net,webforms,scrapysharp,C#,Asp.net,Webforms,Scrapysharp,当使用scrapysharp浏览网页时,我的浏览器一直在加载,不会转到下一行代码。下面是我使用c#asp.net web表单的代码。我可以知道为什么吗?我使用的链接正在工作,可以手动浏览。代码只是停留在Browser.NavigateToPage(新Uri(“http://www.asnb.com.my/v3_/asnbv2_0index.php"));并继续在浏览器中加载。我正在使用asp.NETWebForm ScrapingBrowser Browser = new ScrapingBro
Browser.NavigateToPage(新Uri(“http://www.asnb.com.my/v3_/asnbv2_0index.php"));代码>并继续在浏览器中加载。我正在使用asp.NETWebForm
ScrapingBrowser Browser = new ScrapingBrowser();
Browser.AllowAutoRedirect = true;
Browser.AllowMetaRedirect = true;
WebPage PageResult = Browser.NavigateToPage(new Uri("http://www.asnb.com.my/v3_/asnbv2_0index.php"));
HtmlNode TitleNode = PageResult.Html.CssSelect(".navbar-brand").First();
我遇到了同样的问题,决定不使用Browser.NavigateToPage
,而是使用HtmlDocument
获取PageResult.Html
例如:
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://www.asnb.com.my/v3_/asnbv2_0index.php");
HtmlNode TitleNode = doc.DocumentNode.CssSelect(".navbar-brand").First();
这将使您获得预期的结果。将呼叫转移到backgroundworker线程。请注意,在ScrapingBrowser.cs(ScrapySharp/ScrapySharp/Network/ScrapingBrowser.cs)的第353行中,对NavigateToPage()的调用调用异步版本:
public WebPage NavigateToPage(Uri url, HttpVerb verb = HttpVerb.Get, string data = "", string contentType = null)
{
return NavigateToPageAsync(url, verb, data, contentType).Result;
}
我也遇到了同样的问题,当我在我的BGW线程中将调用移动到我的DoWork方法时,它就开始以您期望的方式运行。另一种方法是使用NavigatePage的异步版本,例如:
private async Task<WebPage> LoadPage(Uri uri)
{
WebPage page = await browser.NavigateToPageAsync(uri);
return page;
}
专用异步任务加载页(Uri)
{
网页页面=等待浏览器。NavigateToPageAsync(uri);
返回页面;
}
这太奇怪了。。。我有一些使用ScrapySharp的老项目,它们仍然运行良好。导航页面上没有挂起/卡住。但我在一个新的MVC项目中尝试了ScrapySharp(具有相同的目标框架和版本),它在NavigateToPage上卡住了。。。无论如何,HtmlAgilityPack在新项目中运行良好-@NickG。我以前也曾在将代码从控制台项目移动到WPF项目时挂起代码。修复了我将一段工作代码从控制台应用程序移动到WPF应用程序,并且使用NavigateToPage
的调用停止工作。这个解决方案解决了这个问题。