正規表現 (iPhone での HTML 解析)
質問
object-c を使用して Web サイトからデータを取得しようとしています。これは私にとって非常に新しいことなので、いくつか調べてみました。今わかっていることは、xpath を使用する必要があり、iPhone 用の hple と呼ばれるそのための別のラッパーがあるということです。私のプロジェクトでそれを起動して実行しています。
サイトから情報を取得する方法について混乱しています。どうやら、このコード行では正規表現を使用することになっているようです。
NSArray * a = [doc search:@"//a[@class='sponsor']"];
これはほんの一例です。検索の内容:@"...." は正規表現ですか?もしそうなら、サイトを解析するプログラムに必要な数百のパターンを開発できると思います (大量のデータが必要です) が、もっと良い方法はあるでしょうか?私はこれでとても迷っています。助けていただければ幸いです。
解決
パラメータは正規表現ではなく XPath です。内訳は次のとおりです。
- すべての xpath は、 コンテキストノード. 。この場合、それはルート ノードです。
//
「すべての子孫」を意味する略語です。a
「すべての子供」という意味 ノード ノード タイプが 'a' である" (HTML では、これは アンカー)[...]
が含まれています 述語, 、どれを洗練するかa
合わせる@
属性ノードの略称です@class
「クラス」という名前の属性を意味します@class='sponsor'
「スポンサー」と等しいクラス属性を意味します。これはノードとクラスを一致させないことに注意してください 含む 「スポンサー」など<a class="big sponsor" ...>
;クラスは次でなければなりません 等しい.
まとめると、「ルートから派生し、クラスが「スポンサー」に等しい「a」ノード」が得られます。
他のヒント
これは XPath 式であり、正規表現ではありません。W3C の XPath リファレンスは次のとおりです。 http://www.w3.org/TR/xpath/. 。基本的に、クラス「sponsor」を持つ <a> 要素を検索します。
これは良いことなので注意してください。正規表現は HTML の解析には適していません。
所属していません StackOverflow