私はこれを行うにはさまざまな方法(webclient、webrequestなど)を試してきましたが、結局はできませんでした。C#idなしのHTML要素へのアクセス
<td class="period_slot_1">
<strong>TG</strong>
私が望むのは、上記のテキスト値にアクセスすることです。結果として「TG」が得られます。
どうすればいいですか?
私はこれを行うにはさまざまな方法(webclient、webrequestなど)を試してきましたが、結局はできませんでした。C#idなしのHTML要素へのアクセス
<td class="period_slot_1">
<strong>TG</strong>
私が望むのは、上記のテキスト値にアクセスすることです。結果として「TG」が得られます。
どうすればいいですか?
私はAngleSharpのファンしています。 HTMLスニペットを使用した最小限の例を示します。あなたは、もちろん問題なく"strong"
を選択できるように
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セレクタを取ります。あなたがテーブルのうちデータとクラスの問題を取得することを目指している場合は
、あなたはクラスやデータを投影するDOMとLINQを使用します(再び、JavaScriptのから通常のDOMを使用して、あなたはそうするために使用している)ことができ、以下のような
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 }
それは動作します!どうもありがとうございます。しかし、私はウェブサイトからそれらのデータを読み取ろうとしているので、どのようにしてvarソースが実際にウェブサイトからロードするようにウェブサイトを参照することができますか? –
Anglesharpのreadmeドキュメントには、ここにサイトをロードする例があります:https://github.com/AngleSharp/AngleSharp#simple-demo – jdphenix
ありがとうございました:) –
getElementsByClassName
を使用して親を識別し、子孫を探します。
var parent = getElementsByClassName("period_slot_1")
var descendants = parent.getElementsByTagName("strong");
if (descendants.length)
{
// logic goes here.
}
コメントありがとう!私はあなたがなぜそこに(descendants.length)を置くのか理解していませんが? –
**子孫**の要素があることを確認してください** –
申し訳ありません。だから、私はvar子孫の "強い"のタグネームの要素を持っていますが、そこに保存されている情報(TGとなるでしょう)にどのようにアクセスできますか? –
あなたは正規表現を使用することができます。またはHTMLパーサー。 –