html的灵活性加快了网页的速度

本文关键字:网页 速度 灵活性 html | 更新日期: 2023-09-27 18:13:17

写一些网页抓取的新东西,所以我为此道歉。我试图减少这个应用程序的运行时间。当浏览大约100只股票的列表时,需要30多秒(为了简洁,我只列出了5只)。是否有任何方法可以提高线程/异步编程的效率?我可能遇到了雅虎服务器想要一次发送回单个IP的数量的限制。最终我的目标是创建一个类"股票",其中一堆属性将获取基于web的数据,像这样。

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

html的灵活性加快了网页的速度

使用Parallel。ForEach循环,但不要期望有很大的改进,因为速度99%取决于yahoo的响应时间。

Parallel.ForEach(stocks, stock =>
{
    getPrice(stock);
});

平行。ForEach还可以设置并行度(正在执行的并发操作的数量)。

Parallel.ForEach(stocks, new ParallelOptions() { MaxDegreeOfParallelism = 3 }, stock =>
{
    getPrice(stock);
});

有关更多信息,请查看MSDN文档:https://msdn.microsoft.com/en-us/library/dd460720%28v=vs.110%29.aspx和https://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel%28v=vs.110%29.aspx