7

HTML ドキュメントから単純な C# を使って、証券取引所の情報を解析しようとしています。問題は、構文を理解できないことです。tr class="LomakeTaustaVari"が解析されますが、tr クラスのない 2 番目のビットを取得するにはどうすればよいですか?

これは HTML の一部です。さまざまな値が繰り返されます。

<tr class="LomakeTaustaVari">
    <td><div class="Ensimmainen">12:09</div></td>
    <td><div>MSI</div></td>
    <td><div>POH</div></td>
    <td><div>42</div></td>
    <td><div>64,50</div></td>
</tr>
<tr>
    <td><div class="Ensimmainen">12:09</div></td>
    <td><div>SRE</div></td>
    <td><div>POH</div></td>
    <td><div>156</div></td>
    <td><div>64,50</div></td>
</tr>

私のC#コード:

{
    HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load ("https://www.op.fi/op/henkiloasiakkaat/saastot-ja-sijoitukset/kurssit-ja-markkinat/markkinat?sivu=alltrades.html&sym=KNEBV.HSE&from=10:00&to=19:00&id=32453");

    foreach (HtmlNode row in doc.DocumentNode.SelectNodes("//tr[@class='LomakeTaustaVari']")) 
    {
        Console.WriteLine(row.InnerText);     
    }
    Console.ReadKey();
}
4

5 に答える 5

5

次の xpath を使用してみてください//tr[preceding-sibling::tr[@class='LomakeTaustaVari']]:

var nodes = doc.DocumentNode.SelectNodes("//tr[preceding-sibling::tr[@class='LomakeTaustaVari']]");

trclassを持つ先行ノードを持つノードを選択する必要がありますLomakeTaustaVari

参考までに: ノードが見つからない場合、SelectNodesメソッドは を返しますnull

于 2013-10-16T14:29:59.867 に答える
1

これにより、ドキュメント内のすべてのノードが反復処理されます。おそらく、開始ノードをより具体的にする必要があるため、関心のあるノードのみを選択します。

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("//tr")) 
{
    Console.WriteLine(row.InnerText);     
}
于 2013-10-16T14:10:42.570 に答える
0

おそらく私は何かを理解していませんが、任意のtr要素の選択のための最も単純な XPath が機能するはずです:

doc.DocumentNode.SelectNodes("//tr")

それ以外の場合、特定のクラス属性のみを持つ要素を選択したい場合は、次のようになります。

doc.DocumentNode.SelectNodes("//tr[@class = 'someClass1' or @class = 'someClass2']")
于 2013-10-16T14:10:19.753 に答える
0

ページをロードしたくなくて、要素などhtmlからの準備が整った文字列を使用したいWebBrowser場合は、次の例を使用できます。

var web = new HtmlAgilityPack.HtmlDocument();
web.LoadHtml(webBrowser1.Document.Body.Parent.OuterHtml);
var q = web.DocumentNode.SelectNodes("/html/body/div[2]/div/div[1]") //XPath /html/body/div[2]/div/div[1]
于 2021-03-04T08:19:03.027 に答える