5

我的浏览器只是在使用scrapysharp 导航到页面时继续加载,并且不会转到下一行代码。下面是我使用 c# asp.net web 表单的代码。我可以知道为什么吗?我使用的链接有效,可以手动浏览。代码只是卡在Browser.NavigateToPage(new Uri("http://www.asnb.com.my/v3_/asnbv2_0index.php"));浏览器中并继续加载。我正在使用 asp.net 网络表单。

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();
4

3 回答 3

2

我遇到了同样的问题,决定不使用Browser.NavigateToPage,而是PageResult.Html使用HtmlDocument.

例如:

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();

这应该会给您带来预期的结果。

于 2017-03-08T01:07:31.487 回答
1

将您的呼叫移至后台工作线程。请注意,在 ScrapingBrowser.cs (ScrapySharp/Scr​​apySharp/Network/ScrapingBrowser.cs) 的第 353 行中,对 NavigateToPage() 的调用调用了 Async 版本:

public WebPage NavigateToPage(Uri url, HttpVerb verb = HttpVerb.Get, string data = "", string contentType = null)
{
  return NavigateToPageAsync(url, verb, data, contentType).Result;
}

我遇到了同样的问题,只要我将调用移至 BGW 线程中的 DoWork 方法,它就会开始按您预期的方式运行。

于 2019-12-01T20:25:23.600 回答
1

另一种方法是使用 NavigateToPage 的异步版本,例如:

private async Task<WebPage> LoadPage(Uri uri)
{
    WebPage page = await browser.NavigateToPageAsync(uri);
    return page;
}
于 2020-06-02T16:44:10.233 回答