我一直在尝试各种不同的方法(webclient,webrequest等),但毕竟我无法做到。
<td class="period_slot_1">
<strong>TG</strong>
我想要的是访问上面的文本值,以便我得到&#34; TG&#34;结果。
我该怎么做?
答案 0 :(得分:1)
我是AngleSharp的粉丝。这是使用HTML代码段的最小示例。
static void Main(string[] args)
{
var source = @"
<html>
<head>
</head>
<body>
<td class=""period_slot_1"">
<strong>TG</strong>
</body>
</html>";
var parser = new HtmlParser();
var document = parser.Parse(source);
var strong = document.QuerySelector("strong");
Console.WriteLine(strong.TextContent);
}
QuerySelector()
方法采用CSS选择器,因此您当然可以毫无困难地选择"strong"
。
如果您的目标是从表中获取数据并且该类很重要,您可以(再次使用您可能习惯使用的JavaScript中的普通DOM)使用DOM和LINQ来投影类和数据,如
static void Main(string[] args)
{
var source = @"
<table>
<tr>
<td class=""period_slot_1"">
<strong>TG</strong>
</td>
<td class=""period_slot_2"">
<strong>TH</strong>
</td>
<td class=""period_slot_3"">
<strong>TJ</strong>
</td>
</tr>
<tr>
<td class=""period_slot_1"">
<strong>YG</strong>
</td>
<td class=""period_slot_2"">
<strong>YH</strong>
</td>
<td class=""period_slot_3"">
<strong>YJ</strong>
</td>
</tr>
</table>";
var parser = new HtmlParser();
var document = parser.Parse(source);
var strongs = document.QuerySelectorAll("td > strong")
.Select(x => new
{
Class = x.ParentElement.ClassName,
Data = x.TextContent
})
.OrderBy(x => x.Class);
strongs.ToList().ForEach(Console.WriteLine);
}
输出:
{ Class = period_slot_1, Data = TG }
{ Class = period_slot_1, Data = YG }
{ Class = period_slot_2, Data = TH }
{ Class = period_slot_2, Data = YH }
{ Class = period_slot_3, Data = TJ }
{ Class = period_slot_3, Data = YJ }
答案 1 :(得分:0)
使用getElementsByClassName
识别父级,然后查找后代。
var parent = getElementsByClassName("period_slot_1")
var descendants = parent.getElementsByTagName("strong");
if ( descendants.length )
{
// logic goes here.
}