Я работаю над приложением winforms на C # и у меня есть около 84 URL-адресов, которые я хочу проанализировать с помощью html agility pack
для 84 записей требуется 150 секунд для выполнения задания с кодом ниже.
Мне было интересно, какие варианты у меня есть, чтобы он работал быстрее? любая помощь очень ценится!
Ниже приведена моя структура кода для выполнения работы
public class URL_DATA
{
public string URL { get; set; }
public HtmlDocument doc { get; set; }
}
then I call the below function to do the job
public async Task ProcessUrls(string cookie)
{
var tsk = new List<Task>();
//UrlsToProcess is List<URL_DATA>
UrlsToProcess.ForEach(async data =>
{
tsk.Add(Task.Run(async () =>
{
var htmToParse = await ScrapUtils.GetAgilityDocby(cookie, data.URL);
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmToParse);
data.doc = htmlDoc;
}));
});
await Task.WhenAll(tsk).ConfigureAwait(false);
}
и, наконец, ниже - метод, который я использую для получения строки запроса.
public static async Task<string> GetAgilityDocby(string cookie, string url)
{
using (var wc = new WebClient())
{
wc.Proxy = null;// WebRequest.DefaultWebProxy;// GlobalProxySelection.GetEmptyWebProxy();
wc.Headers.Add(HttpRequestHeader.Cookie, cookie);
wc.Headers.Add(HttpRequestHeader.UserAgent,
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36");
wc.Encoding = Encoding.UTF8;
test++;
return await wc.DownloadStringTaskAsync(url).ConfigureAwait(false);
}
}