Невероятно новое для написания чего-то веб-соскабливания, поэтому я прошу прощения за это. Я пытаюсь сократить время выполнения этого приложения. При запуске списка около 100 акций занимает более 30 секунд (я просто включил список из 5 для краткости). Есть ли способ повысить эффективность при потоковом/асинхронном программировании? Я могу столкнуться с ограничением того, сколько серверов yahoo хочет отправить обратно сразу на один IP-адрес. В конечном итоге моя цель - создать класс «запас», в котором есть куча свойств, которые будут извлекать данные в Интернете, подобные этому.HTMLAgility speeding webget
static void Main(string[] args)
{
List<string> stocks = new List<string>() { "AA", "AAL", "AAPL", "ABX", "ADBE" };
foreach (var stock in stocks)
{
Task.Factory.StartNew(() => { getPrice(stock); });
}
Console.ReadLine();
}
private static void getPrice(string stock)
{
var webGet = new HtmlWeb();
var doc = webGet.Load("http://finance.yahoo.com/q?s=" + stock);
HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//*[@id=\"yfs_l84_" + stock.ToString().ToLower() + "\"]");
if (ourNode != null)
{
Console.WriteLine(stock + ": " + ourNode.InnerText);
}
}
Хорошо большой. Я дам этот снимок, возможно, в методе, который я буду крутить между несколькими разными сайтами, чтобы ускорить его. Как и Google/Nasdaq и т. Д. – user2163343
Да, обратите внимание, когда вы вызываете поисковые системы, такие как Google и т. Д., Потому что в течение небольшого времени вы получаете слишком много запросов, вы будете временно заблокированы. В этом случае вам придется где-то хранить данные и обновлять их по расписанию. –