首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#列表和HtmlParse

C#列表和HtmlParse
EN

Stack Overflow用户
提问于 2016-04-27 07:50:08
回答 1查看 48关注 0票数 0

对不起,我的英语不是我的第一语言。

第1类是我的属性,list第2类是我的html解析器。

目前,它的工作是打开网页,并按照设想找到链接。

现在的问题是,我想使用Linq,另一个列表,或者你们认为最好的。按studRet(名称)对结果进行排序

因此,它从“it支持者”"href“中找到的所有结果都是按

[医]支持者

结果

结果

芬兰人

结果

结果

我应该如何做到这一点,什么是最佳实践,任何能引导我找到答案的好例子?

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

我希望这是个好问题。

Class1

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 08:43:13

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

代码语言:javascript
复制
public void HandleHtml()

...    

List<Tuple<string, Jobbot.Property>> results = new List<Tuple<string, Jobbot.Property>>();

...

                            if (item.Attributes["href"].Value.StartsWith("http://"))
                            {
                                results.Add(Tuple.Create(item.Attributes["href"].Value, data));
                                Console.WriteLine(item.Attributes["href"].Value);
                            }

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

代码语言:javascript
复制
results.OrderBy(x => x.Item2.studRet);

但正如前面提到的,在你的情况下,这是不必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36883570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档