2011-10-26 10 views
0

実際に私はhtmlparserを使ってウェブサイトを解析しました。解析されたオブジェクト内の特定の値、たとえば文字列 "$ 199"を探して、その要素を(定期的な解析によって)追跡して、 "199ドル"または変更されました。node.jsの大きなオブジェクトで特定の値を見つけるにはどうすればよいですか?

そして愚かないくつかの痛みを伴うが、私の目を使用して検索した後、私はその文字列がどこかでこのように位置していますが見つかりました:

price = handler.dom[3].children[3].children[3].children[5].children[1]. 
     children[3].children[3].children[5].children[0].children[0].raw; 

だから私は苦痛が少ないです方法があるかどうかを知りたいのですが?ありがとう!

+0

質問に「$ 199」という値が存在することを確認しようとしていますか(生のHTMLの正規表現が最も簡単かもしれません)、または定義されているDOMノードを見つけようとしていますか? 、またはその周りの文脈、または...? – Benjie

+0

が更新されました。十分にはっきりしていることを願って、ありがとう –

答えて

0

ツリーベースの再帰検索は、おそらくあなたが興味を持っているノードを取得するのが最も簡単でしょう。私はhtmlparserを使用していませんでしたし、ドキュメントが少し薄いと思われるので、これはあなたを取得するための単なる一例である

開始およびテストされていません。

function getElement(el,val) { 
    if (el.children && el.children.length > 0) { 
     for (var i = 0, l = el.children.length; i<l; i++) { 
      var r = getElement(el.children[i],val); 
      if (r) return r; 
     } 
    } else { 
     if (el.raw == val) { 
      return el; 
     } 
    } 
    return null; 
} 

コールgetElement(handler.dom[3],'$199')をし、それがchildrenのない要素を見つけるまで再帰的にすべての子を通過し、それが「$ 199」との生の値です比較します。これはまっすぐな比較であることに注意してください。これを正規表現などに置き換えることができますか?

関連する問題