C# 从html获取名称、价格和数量/金额

C# 从html获取名称、价格和数量/金额,c#,html,list,C#,Html,List,如何获得这些物品的名称、价格和数量/数量。 之后我需要把每个人都放在他们自己的列表中。所以我想每个循环都需要一些 这是3个项目,我可以得到一个包含100个项目的列表,但对于这个例子,我只得到3个 <root> <div class="market_listing_table_header"> <div class="market_listing_price_listings_block"> <div class=

如何获得这些物品的名称、价格和数量/数量。 之后我需要把每个人都放在他们自己的列表中。所以我想每个循环都需要一些

这是3个项目,我可以得到一个包含100个项目的列表,但对于这个例子,我只得到3个

<root>  <div class="market_listing_table_header">
        <div class="market_listing_price_listings_block">
            <div class="market_listing_right_cell market_listing_their_price market_sortable_column" data-sorttype="price">PRICE<span class="market_sort_arrow" style="display:none;"></span></div>
            <div class="market_listing_right_cell market_listing_num_listings market_sortable_column" data-sorttype="quantity">QUANTITY<span class="market_sort_arrow" style="display:none;"></span></div>
            <div class="market_listing_right_cell market_listing_price_listings_combined market_sortable_column" data-sorttype="price">PRICE<span class="market_sort_arrow" style="display:none;"></span></div>
        </div>
                <div class="market_sortable_column" data-sorttype="name"><span class="market_listing_header_namespacer"></span>NAME<span class="market_sort_arrow" style="display:none;"></span></div>
    </div>

<a class="market_listing_row_link" href="http://steamcommunity.com/market/listings/730/P250%20%7C%20Sand%20Dune%20%28Field-Tested%29" id="resultlink_0">
    <div class="market_listing_row market_recent_listing_row market_listing_searchresult" id="result_0">
                <img id="result_0_image" src="http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopujwezhz3MzbcDNG09GzkImemrmkMeuEzjwB7sMgjL_H8d6hilbs_0c5Ym6lI9WddVc2MgyB-FXtl7q6m9bi65jdplfl/62fx62f" srcset="http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopujwezhz3MzbcDNG09GzkImemrmkMeuEzjwB7sMgjL_H8d6hilbs_0c5Ym6lI9WddVc2MgyB-FXtl7q6m9bi65jdplfl/62fx62f 1x, http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopujwezhz3MzbcDNG09GzkImemrmkMeuEzjwB7sMgjL_H8d6hilbs_0c5Ym6lI9WddVc2MgyB-FXtl7q6m9bi65jdplfl/62fx62fdpx2x 2x"" style="border-color: #D2D2D2;" class="market_listing_item_img" alt="" />       
                <div class="market_listing_price_listings_block">
            <div class="market_listing_right_cell market_listing_num_listings">
                <span class="market_table_value">
                    <span class="market_listing_num_listings_qty">41,449</span>
                </span>
            </div>
            <div class="market_listing_right_cell market_listing_their_price">
                <span class="market_table_value">
                    Starting at:<br/>
                    <span style="color:white">$0.03 USD</span>
                </span>
                <span class="market_arrow_down" style="display: none"></span>
                <span class="market_arrow_up" style="display: none"></span>
            </div>
        </div>

                <div class="market_listing_item_name_block">
            <span id="result_0_name" class="market_listing_item_name" style="color: #D2D2D2;">P250 | Sand Dune (Field-Tested)</span>
            <br/>
            <span class="market_listing_game_name">Counter-Strike: Global Offensive</span>
        </div>
        <div style="clear: both"></div>
    </div>
</a>

<a class="market_listing_row_link" href="http://steamcommunity.com/market/listings/730/Operation%20Breakout%20Weapon%20Case" id="resultlink_1">
    <div class="market_listing_row market_recent_listing_row market_listing_searchresult" id="result_1">
                <img id="result_1_image" src="http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQNqhpOSV-fRPasw8rsUFJ5KBFZv668FFMu1aPMI24auITjxteJwPXxY72AkGgIvZAniLjHpon2jlbl-kpvNjz3JJjVLFG9rl1YLQ/62fx62f" srcset="http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQNqhpOSV-fRPasw8rsUFJ5KBFZv668FFMu1aPMI24auITjxteJwPXxY72AkGgIvZAniLjHpon2jlbl-kpvNjz3JJjVLFG9rl1YLQ/62fx62f 1x, http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQNqhpOSV-fRPasw8rsUFJ5KBFZv668FFMu1aPMI24auITjxteJwPXxY72AkGgIvZAniLjHpon2jlbl-kpvNjz3JJjVLFG9rl1YLQ/62fx62fdpx2x 2x"" style="border-color: #D2D2D2;" class="market_listing_item_img" alt="" />     
                <div class="market_listing_price_listings_block">
            <div class="market_listing_right_cell market_listing_num_listings">
                <span class="market_table_value">
                    <span class="market_listing_num_listings_qty">2,594,132</span>
                </span>
            </div>
            <div class="market_listing_right_cell market_listing_their_price">
                <span class="market_table_value">
                    Starting at:<br/>
                    <span style="color:white">$0.03 USD</span>
                </span>
                <span class="market_arrow_down" style="display: none"></span>
                <span class="market_arrow_up" style="display: none"></span>
            </div>
        </div>

                <div class="market_listing_item_name_block">
            <span id="result_1_name" class="market_listing_item_name" style="color: #D2D2D2;">Operation Breakout Weapon Case</span>
            <br/>
            <span class="market_listing_game_name">Counter-Strike: Global Offensive</span>
        </div>
        <div style="clear: both"></div>
    </div>
</a>

<a class="market_listing_row_link" href="http://steamcommunity.com/market/listings/730/MP7%20%7C%20Army%20Recon%20%28Field-Tested%29" id="resultlink_2">
    <div class="market_listing_row market_recent_listing_row market_listing_searchresult" id="result_2">
                <img id="result_2_image" src="http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou6ryFBRw7ODYYzxb092kmZm0mvLwOq7c2GgAuMEpjLqY89mt3wzsr0RpZDygI4PAdQ42MgrS81bqk7u818C8tcjXiSw08qBOp-g/62fx62f" srcset="http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou6ryFBRw7ODYYzxb092kmZm0mvLwOq7c2GgAuMEpjLqY89mt3wzsr0RpZDygI4PAdQ42MgrS81bqk7u818C8tcjXiSw08qBOp-g/62fx62f 1x, http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou6ryFBRw7ODYYzxb092kmZm0mvLwOq7c2GgAuMEpjLqY89mt3wzsr0RpZDygI4PAdQ42MgrS81bqk7u818C8tcjXiSw08qBOp-g/62fx62fdpx2x 2x"" style="border-color: #D2D2D2;" class="market_listing_item_img" alt="" />      
                <div class="market_listing_price_listings_block">
            <div class="market_listing_right_cell market_listing_num_listings">
                <span class="market_table_value">
                    <span class="market_listing_num_listings_qty">53,539</span>
                </span>
            </div>
            <div class="market_listing_right_cell market_listing_their_price">
                <span class="market_table_value">
                    Starting at:<br/>
                    <span style="color:white">$0.03 USD</span>
                </span>
                <span class="market_arrow_down" style="display: none"></span>
                <span class="market_arrow_up" style="display: none"></span>
            </div>
        </div>

                <div class="market_listing_item_name_block">
            <span id="result_2_name" class="market_listing_item_name" style="color: #D2D2D2;">MP7 | Army Recon (Field-Tested)</span>
            <br/>
            <span class="market_listing_game_name">Counter-Strike: Global Offensive</span>
        </div>
        <div style="clear: both"></div>
    </div>
</a>
</root>
数据是来自第一个代码框的数据。 在document.LoadXmlSystem.Net.WebUtility.HtmlDecodedata失败;我不明白为什么,也不知道我做错了什么

编辑: 现在我已经想出了这个代码,但是它不起作用,有什么建议吗

                HtmlDocument node = new HtmlDocument();
                node.Load(data);
                valueList = node.DocumentNode.SelectNodes("./div[contains(concat(' ', @class, ' '), ' market_listing_their_price ')]/span/span")
                                .Select(p => p.InnerText)
                                .ToList();
                numList = node.DocumentNode.SelectNodes("./div[contains(concat(' ', @class, ' '), ' market_listing_num_listings ')]/span/span")
                                .Select(p => p.InnerText)
                                .ToList();
                nameList = node.DocumentNode.SelectNodes("./div/span[contains(concat(' ', @class, ' '), ' market_listing_item_name ')]")
                                .Select(p => p.InnerText)
                                .ToList();
                //valueList.Add(value); //Lowest price for the item
                //numList.Add(num); //Volume of that item
                //nameList.Add(name); //Name of that item

请显示您尝试的内容。您尝试加载的文件不是有效的XML。并非所有html都是有效的XML—这就是为什么将其加载到XmlDocument时出错的原因。html不是XML。阅读HTML是一项非常常见的任务,关于它有很多问题——没有一个答案建议使用XML解析器——所以不确定您是从哪里得到这样的代码的。链接应该会让你开始,如果你不喜欢HtmlAgilityPack,请确保搜索类似的工具,如果特定的方法不适合你的情况,请询问澄清问题。好的,我自己做的,但感谢链接和解释!:我不能让它工作。
                HtmlDocument node = new HtmlDocument();
                node.Load(data);
                valueList = node.DocumentNode.SelectNodes("./div[contains(concat(' ', @class, ' '), ' market_listing_their_price ')]/span/span")
                                .Select(p => p.InnerText)
                                .ToList();
                numList = node.DocumentNode.SelectNodes("./div[contains(concat(' ', @class, ' '), ' market_listing_num_listings ')]/span/span")
                                .Select(p => p.InnerText)
                                .ToList();
                nameList = node.DocumentNode.SelectNodes("./div/span[contains(concat(' ', @class, ' '), ' market_listing_item_name ')]")
                                .Select(p => p.InnerText)
                                .ToList();
                //valueList.Add(value); //Lowest price for the item
                //numList.Add(num); //Volume of that item
                //nameList.Add(name); //Name of that item