如何使用XPath / HTMLAgilityPack读取JavaScript对象

时间:2013-07-19 07:50:50

标签: c# javascript xpath html-agility-pack

对于我的抓取工具项目,我需要从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获取其他抓取工具的详细信息。

1 个答案:

答案 0 :(得分:1)

由于HTML Agility Pack不评估HTML的任何内容,因此javascript代码应该被视为纯文本。使用SelectSingleNode方法查找Javascript,然后只需抓住InnerHtml即可获取内容。

要么找到C#javascript解析器(例如Iron JS),要么使用标准文本操作技术(String.*Regex来编写解析器来提取您所追求的位。

一旦你有大括号之间的位,你可以使用前面提到的解析器或类似Json.NET的库来解析它们,因为大括号之间的片段似乎是有效的json。