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