Как читать объект JavaScript с помощью XPath / HTMLAgilityPack

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 Agility Pack не оценивает какое-либо содержимое HTML, код javascript должен просто считаться простым текстом. Используйте метод SelectSingleNode чтобы найти часть Javascript, а затем просто захватите InnerHtml, чтобы перейти к содержимому.

Либо найдите парсер C # javascript (например, Iron JS ), либо напишите парсер, используя стандартные методы обработки текста ( String.* Или Regex чтобы извлечь бит, которые вы после.

Когда у вас есть биты между фигурными скобками, вы можете проанализировать их с использованием упомянутого выше парсера или библиотеки Json.NET , поскольку фрагменты между фигурными скобками кажутся действительными json.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему