C#List和HtmlParse

时间:2016-04-27 07:50:09

标签: c# linq list properties

请原谅我的英语,这不是我的第一语言。

第1类是我拥有我的财产和清单的地方 第2类是我的html解析器。

目前,它可以打开网页并找到所谓的链接。

现在我的问题是,我想使用Linq,另一个List,或者你认为最好的。 通过studRet(nameid)

对结果进行排序

因此,它从“itsupporter”“href”找到的所有结果都按照分类排序 Itsupporter
导致
结果

finans
导致
结果

我该怎么做,什么是最佳做法,哪些好的例子可以指导我找到答案?

我不知道如何确保它找到的链接来自右侧studRet。

我希望这是一个很好的问题。

  

的Class1

private readonly List<Property> dataList = new List<Property>();
    // Get property
    internal struct Property
    {
        public readonly string url;
        public readonly string cssTag;
        public readonly string studRet;
        public readonly int id;

        public Property(string url, string cssTag, string studRet, int id)
        {

            this.url = url;
            this.cssTag = cssTag;
            this.studRet = studRet;
            this.id = id;

        }
    }

    public List<Property> GetList()
    {
        dataList.Add(new Property("http://elevplads.dk/annoncer?search=It-Supporter", "//div[@class='col-xs-12 col-sm-12 col-md-12']//a", "itsupporter", 1));
        dataList.Add(new Property("http://elevplads.dk/annoncer?stillingstype=finans", "//div[@class='col-xs-12 col-sm-12 col-md-12']//a", "finans", 2));
        return dataList;
    }
  

第2类

public readonly Jobbot Jobdata = new Jobbot();
public void HandleHtml()
    {
        List<Jobbot.Property> dataList = Jobdata.GetList();         

        HtmlWeb web = new HtmlWeb();

        foreach (var data in dataList) 
        {             
            HtmlDocument document = web.Load(data.url);
            var nodes = document.DocumentNode.SelectNodes(data.cssTag);
            if (nodes != null)
            {
                foreach (HtmlNode item in nodes)
                {
                    if (item.Attributes.Contains("href"))
                    {
                        if (item.Attributes["href"].Value.StartsWith("http://"))
                        {

                            Console.WriteLine(item.Attributes["href"].Value);
                        }
                    }
                }
            }
        }
    } // End

1 个答案:

答案 0 :(得分:0)

我不太确定我理解你的问题。您已经按照您希望结果集的顺序发送了网络请求,因此我不明白为什么您需要对它们进行排序。至于使用studRet属性映射链接,您可以将结果放入列表中:

translateZ(1px)

然后,如果您真的需要对可以使用的结果进行排序:

translateZ(-1px)

但如前所述,在您的情况下,没有必要。