XPath / HTMLAgilityPackでJavaScriptオブジェクトを読む方法

c# html-agility-pack javascript xpath

質問

私のクローラプロジェクトでは、JavaScriptオブジェクトから製品の詳細を取得する必要があります。

次のJavaScriptからオブジェクトの詳細を効果的に取得するにはどうすればよいですか?私はXPathとHTMLAgilityPackを使用します。

<script type="text/javascript">
    var product = {
        identifier: '2051189775',     //PRODUCT ID
        fn: 'Fit- Whiskered Dark Wash Skirt',
        category: ['sale'],
        brand: 'Brand Name',
        price: '22.90',  // this would be the discount price
        amount: '31.80',  // this would be the original price
        currency: 'USD',
        //List can me even more.
    };
</script>

以前はJavaScriptオブジェクトから詳細を取得しようとはしていませんでした。私は他のクローラのためにHTMLから直接詳細を取得していました。

受け入れられた回答

HTMLアジリティパックはHTMLの内容を評価しないので、JavaScriptコードはプレーンテキストと見なすだけです。 SelectSingleNodeメソッドを使用してJavascriptの部分を探し、InnerHtmlを取得してコンテンツに移動します。

C#のjavascriptパーサー(たとえばIron JS )を見つけたり、標準的なテキスト操作技法( String.*またはRegexを使用して後のビットを抽出する)を使用してパーサーを作成します。

中括弧の間のビットを取得すると、前に述べたパーサーやJson.NETのようなライブラリを使ってそれらを解析することができます。中括弧の間の部分は有効なjsonのようです。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ