С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
1

Парсинг JavaScript кода (только инициализатор объектов)

14.08.2015, 20:19. Показов 1893. Ответов 2

Author24 — интернет-сервис помощи студентам
Никак не определюсь со способом парсинга исходников JavaScript. Итак, есть кусочки кода, вроде такого:
Javascript
1
2
3
4
5
6
7
8
9
10
var game =
    {
        identifier: '000000',
        name:  'Fallout 3',
        category : ['RGG','Shooter'],
        brand: '',
        price:  '50.0000',
        currency: 'USD',
        url:  'http://www.test.shop/games/fallout3.html',
    };
, нужно из этого получить python-объект. Каким способом это лучше делать?
Вложенных объектов не будет, JS функций тоже, в общем сложность структуры объектов меняться не будет. Только парочка строковых свойств и массив.
Думал про regex и v8, но как-то не срослось. Посоветуете чего?

Добавлено через 2 часа 9 минут
раскалупал регулярками. буду рад любым другим предложениям!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import re
game = r"""var game =
    {
        identifier: '000000',
        name:  'Fallout 3',
        category : ['RPG','Shooter'],
        brand: '',
        price:  '50.0000',
        currency: 'USD',
        url:  'http://www.test.shop/games/fallout3.html',
    };
"""
regex = re.compile(
        r"""(?P<key>\w+) ?:\s*(?:'(?P<value>.*)'|\[(?P<array>.*)\])(?=,?\n)"""
)
for match in regex.finditer(game):
    result = match.groupdict()
    try:
        value = result.get('value') or \
                list(map(lambda s: s.strip("'"), result['array'].split(',')))
        key = result['key']
        print(key, value, sep='= ')
    except AttributeError:
        assert result['value'] == ''
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2015, 20:19
Ответы с готовыми решениями:

Парсинг и отображение только части html-кода источника
чем воспользоваться для фильтрации открываемой страницы, чтобы отобразить только нужны блок из...

Что лучше использовать - функцию-конструктор или инициализатор объектов?
Дайте совет новичку - что лучше использовать - функцию-конструктор или инициализатор объектов,...

Не работает javascript, который подгружает часть кода, только в Mozille
Чтобы лучше понять работу скрипта, пожалуйста откройте новость, и увидите значек закрытия окна. Во...

Чтобы создать уникальность кода объектов, хранящихся в разных бд используется только такой способ или есть еще?
Я прочитал, что чтобы поддерживать уникальность объектов, хранящихся в разных бд, нужно создать...

2
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.08.2015, 01:32 2
Предлагаю использовать стандартый модуль json

Ну это с учетом того, что все лишнее будет отделено.
0
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
15.08.2015, 09:45  [ТС] 3
alex925, json - первое, что пришло в голову, но там придется менять и добавлять скобки вручную. Слишком большая разница в форматах
0
15.08.2015, 09:45
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2015, 09:45
Помогаю со студенческими работами здесь

Парсинг javascript
Здравствуйте, пытался пропарсить js на C#, но он невидит его, как на php пропарсить этот код...

Парсинг на javascript
Ситуация такая: Необходимо парсить весь исходный код чужой страницы на стороне пользователя (потому...

Парсинг javaScript
Добрый день. Пишу на asp.net + ext.net (ext.js) Есть поле для ввода javaScript,его содержимое...

Парсинг из PHP в JavaScript
Всем привет! Давным давно писал код и понадобилось снова. Совершенно забыл как доставать...

Парсинг JavaScript значений
Всем привет. Такая проблемка - как можно с помощью JAVA спарсить динамически изменяемые данные с...

Парсинг сайта с JavaScript
Есть сайт, на котором контент формируется JavaScript'ом, соответственно, при парсинге через cURL я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru