簡體   English   中英

C#訪問沒有ID的html元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM