如何在span类的表格中选择两个单元格? 我的HTML看起来像这样。 我想要的是选择span class =“store-name-span”的innertext 和span class =“price”
<table class="list mixed zebra-striped">
<tbody>
<tr data-pris_typ="normal">
<td class="span4-5">
<span class="store-name-span">Electroworld</span>
<a data-drg="store-2641" class="drg-sidebar"></a>
</td>
<td class="span3 cell-bar">
<span class="chart-bar price" style="width:50px"></span>
<span class="price" title="Uppdaterad 2013-02-18 08:23">1 690:-</span>
</td>
</tr>
<tr data-pris_typ="normal">
<td class="span4-5">
<span class="store-name-span">Webhallen</span>
<a data-drg="store-113" class="drg-sidebar"</a>
</td>
<td class="span3 cell-bar">
<span class="chart-bar price" style="width:50px"></span>
<span class="price" title="Uppdaterad 2013-02-18 13:55">1 690:-</span>
</td>
</tr>
</tbody>
</table>
var Nodes = from x in doc2.DocumentNode.Descendants()
//where x.Attributes["class"].Value == "store-name-span"
where x.Name == "span" && x.Attributes["class"].Value == "store-name-span"
select x.InnerText;
答案 0 :(得分:1)
我会使用xpath:
var nodes = doc.DocumentNode.SelectNodes("//span[@class='store-name-span' or @class='price']");
foreach (var node in nodes)
Console.WriteLine(node.InnerText);
使用LINQ:
var nodes = doc.DocumentNode.Descendants("span")
.Where(s =>
s.GetAttributeValue("class", null) == "store-name-span" ||
s.GetAttributeValue("class", null) == "price"
);
这会让你:
Electroworld
1 690:-
Webhallen
1 690:-
答案 1 :(得分:0)
我会使用querySelectorAll的组合并获取innerHTML。
queryselectors可以全局调用(在文档上)以及单个元素。
答案 2 :(得分:0)
在该特定HTML布局中,您可以执行以下操作:
var items = doc.DocumentNode.SelectNodes("//tr[@data-pris_typ='normal']").Select(x => new
{
Store = x.SelectSingleNode(".//span[@class='store-name-span']").InnerText,
Price = x.SelectSingleNode(".//span[@class='price']").InnerText
});
在items
上,您将获得所需的一切。每个项目都是匿名类型,其中包含Store
和Price
字段。
一件重要的事情:
您可能希望使用Price
清除字段(例如HttpUtility.HtmlDecode()
)。为此,您必须添加对System.Web
程序集的引用。