Как я могу использовать Beautiful Soup, чтобы получить значение из словаря, который находится внутри тега <script> - PullRequest
1 голос
/ 23 марта 2020

Как я могу использовать Beautiful Soup, чтобы получить значение productId из следующего тега <script>

soup.find('script')
<script>
    gtmData.productData['34597834'] = {

        "productId": 1234,
        "foo": 1,
        "bar": 2,
    }
<script>

Я хочу получить значение productId

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Вы можете напечатать объект soup в виде текста.

import re
data = """gtmData.productData['34597834'] = {

    "productId": 1234,
    "foo": 1,
    "bar": 2,
}"""

print(re.search(r"productId\": (\d*)", data).group(1))

Вывод:

1234

Также есть несколько способов, например загрузить его в JSON, чтобы разобрать, что вы хотите.

1 голос
/ 23 марта 2020

Другой способ, без регулярных выражений:

scr = """[your script above]"""
items = scr.split('{')[1].split('}')[0].split(',')
for item in items:
    if ':' in item:
        product = item.split(': ')
        print(product[0].strip(), product[1])

Вывод:

"productId" 1234
"foo" 1
"bar" 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...