同时解析3个链接htmlagilitypack

时间:2016-03-26 17:37:45

标签: c# asp.net-mvc html-agility-pack

我解析2014,2013,2015年游戏的命令历史。 它们具有相同的结构。但链接不同。

var fourthDoc = htmlWeb.Load("http://soccer.net/2014-2015/results/");
var fifthDoc =  htmlWeb.Load("http://soccer.net/2013-2014/results/");
var sixthDoc =  htmlWeb.Load("http://soccer.net/2015-2016/results/");

我解析数据的方式:

       var Games =
                fourthDoc.DocumentNode.SelectNodes("@class = 'abc'").Select(a => new Game()
                {
                    Date = a.SelectNodes("./a/div/div[1]/span").Single().InnerText.Trim(),
                    //....
                });

型号:

public class Game
    {
            public int Id {get;set;}
            public DateTime Date { get; set; }
            public string FirstTeam { get; set; }
            public string SecondTeam { get; set; }
    }

如何在一条路径中组合三个链接? 例如

var fourthDoc = htmlWeb.Load("http://soccer.net/2014-2015/results/"+"http://soccer.net/2013-2014/results/"+"http://soccer.net/2015-2016/results/");

1 个答案:

答案 0 :(得分:1)

我不确定,但我认为您想要提供一系列字符串(网址)并解析所有来自网站的数据。

你应该尝试类似的东西;

        List<string> urls = new List<string>
                            {
                                "http://soccer.net/2014-2015/results/",
                                "http://soccer.net/2013-2014/results/",
                                "http://soccer.net/2015-2016/results/"
                            };

        List<Games> games = new List<Games>();
        foreach (string url in urls)
        {
            var currentData = htmlWeb.Load("url");

            var currentListOfGames =
                currentData.DocumentNode.SelectNodes("@class = 'abc'").Select(a => new Game()
                                                                                   {
                                                                                       Date = a.SelectNodes("./a/div/div[1]/span").Single().InnerText.Trim(),
                                                                                       //....
                                                                                   });

            games.AddRange(currentListOfGames);
        }

因为htmlagilitypack的htmlweb.Load方法每个请求只接受一个url。