ScrapySharp NavigateToPage时不断加载

时间:2017-03-03 16:30:39

标签: c# asp.net webforms scrapysharp

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

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

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,决定不使用var DSTemplateURL = localStorage.getItem("ls_DSurl") + "/v2/accounts/" + localStorage.getItem("ls_DS_accountid") + "/templates?"; var DSData = 'folder=Shared Templates'; request = $.ajax({ headers: { 'Authorization': 'Bearer ' + localStorage.getItem('ls_DSaccess_token') }, type: 'GET', url: DSTemplateURL, data: DSData, //dataType: 'json', contentType: "application/json", cache: false }); 而是使用Browser.NavigateToPage获取PageResult.Html

例如:

HtmlDocument

这可以为您提供预期的结果。

答案 1 :(得分:1)

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

private async Task<WebPage> LoadPage(Uri uri)
{
    WebPage page = await browser.NavigateToPageAsync(uri);
    return page;
}

答案 2 :(得分:0)

将您的调用移至后台工作线程。请注意,在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方法上,它就会开始按照您期望的方式运行。