質問

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 の解析には適していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top