[英]C# accessing html element without id
我一直在嘗試各種不同的方法(webclient,webrequest等)來執行此操作,但是我畢竟做不到。
<td class="period_slot_1">
<strong>TG</strong>
我想要的是訪問上述文本值,以便得到“ TG”作為結果。
我怎樣才能做到這一點?
我是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 }
使用getElementsByClassName
標識父級,然后查找后代。
var parent = getElementsByClassName("period_slot_1")
var descendants = parent.getElementsByTagName("strong");
if ( descendants.length )
{
// logic goes here.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.