我的浏览器只是在使用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();
答案 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方法上,它就会开始按照您期望的方式运行。