6

HtmlAgilityPack、XPath を使用してメソッドを含む

私は HtmlAgilityPack を使用しており、クラス属性に特定の単語が含まれているかどうかを知る必要があります。現在、このページがあります。

<div class="yom-mod yom-art-content "><div class="bd">
<p class="first"> ....................
  </p>
</div>
</div>

私はこれをやっています:

HtmlDocument doc2 = ...;
List<string> paragraphs = doc2.DocumentNode.SelectNodes("//div[@class = 'yom-mod yom-art-content ']//p").Select(paragraphNode => paragraphNode.InnerHtml).ToList();

しかし、私が必要とするのは具体的すぎるため、次のようなものが必要です。

List<string> paragraphs = doc2.DocumentNode.SelectNodes("//div[contains(@class, 'yom-art-content']//p").Select(paragraphNode => paragraphNode.InnerHtml).ToList();

しかし、それはうまくいきません、私を助けてください..

4

2 に答える 2

19

おそらく問題は、contains() 関数の右括弧が抜けていることです:

//div[contains(@class, 'yom-art-content']//p
                                        v
//div[contains(@class, 'yom-art-content')]//p


List<string> paragraphs = 
        doc2.DocumentNode.SelectNodes("//div[contains(@class, 'yom-art-content')]//p")
            .Select(paragraphNode => paragraphNode.InnerHtml).ToList();

一般的な提案として、「うまくいかなかった」などと言うときの意味を説明してください。問題の追跡に役立つエラー メッセージが表示されているのではないでしょうか?

于 2013-02-04T19:51:24.470 に答える
1

これに HAP を使用する代わりに、jQuery スタイル セレクターを提供するCsQueryを調べてください。

あなたがやろうとしていることに特に適しているように見えます。

CsQuery は .NET 4 用の jQuery ポートです。すべての CSS2 および CSS3 セレクター、jQuery のすべての DOM 操作メソッド、およびいくつかのユーティリティ メソッドを実装します。jQuery テスト スイート (1.6.2 以降) の大部分は C# に移植されています。

于 2013-02-04T19:16:17.800 に答える