В одном из моих сценариев я использую urllib2
и BeautifulSoup
для анализа HTML-страницы и чтения тега <script>
.Разбор Javascript с Python
Это то, что я получаю:
<script>
var x_data = {
logged: logged,
lengthcarrousel: 2,
products : [
{
"serial" : "106541823"
...
</script>
Моя цель состоит в том, чтобы прочитать JSON в переменную x_data
, и я не знаю, как сделать это правильно. я хотя:
- Преобразовать в строку и удалить первые символы до {и то же для последнего}
- Использование регулярных выражений с чем-то вроде и принять первая группа
- «{*.}» Что-то другое ?
Я не знаю, эффективны ли они и если есть другие способы сделать это красиво.
Как вы думаете, способ предпочтительнее другого? любой метод, о котором я могу не знать?
Заранее благодарю за любой совет.
EDIT:
После консультации я получить решение РегВыр, но я не могу найти в нескольких строках, несмотря на использование re.MULTILINE:
string1 = '<script>
var x_data = {
logged: logged,
lengthcarrousel: 2,
products : [
{
"serial" : "106541823"}
]
};
</script>'
p = re.compile(r'\{.*\};',re.MULTILINE);
m = p.search(string1)
if m:
print m.group(0)
else:
print "Error !"
Я всегда получал «Ошибка!».
EDIT2:
хорошо работает с re.DOTALL
.
https://pypi.org/project/jsonfinder/ –
Зависит от того, как изменяется входной сигнал. Если это всегда будет «var x_data = ...», вы можете просто заменить регулярное выражение на этот бит, привязанный к началу строки. Ваше решение может лежать в любом месте так просто, как сложное, как вложение парсера JS. –
Здравствуйте, всегда будет 'var x_data = ...'. Спасибо, я сейчас напишу regexp-решение. –