Python API: Как достать amount из страницы

Рейтинг: 0Ответов: 2Опубликовано: 13.01.2023

Вот код страницы, которую надо спарсить:

<html>
    <head>
        <meta name="color-scheme" content="light dark">
    </head>
    <body>
        <pre style="word-wrap: break-word; white-space: pre-wrap;">
            {"contractData":{"amount":6414680,"owner_address":"TMXSPuwvw3A1PcMB2VssrXKfF26ANzfrcj","to_address":"T9yssSMcwoSXkh4jVpXG8KPPzeAyA5WQk6"}}
        </pre>
    </body>
</html>

В <p> есть amount и его значение, как их оттуда достать?

Вот мой код:

import requests
from bs4 import BeautifulSoup

transaction = 'тут ссылка на страницу'

response = requests.get(transaction).text
soup = BeautifulSoup(response, 'lxml')

Ответы

▲ 2Принят

Распарсить полученную строку как JSON и достать значение как из словаря. Псевдокод:

resAsStr = requests.get(transaction).text

resAsDict = json.loads(resAsStr)

amount = resAsDict["contractData"]["amount"]
▲ 2
import json
from bs4 import BeautifulSoup

txt ='''<html>
    <head>
        <meta name="color-scheme" content="light dark">
    </head>
    <body>
        <pre style="word-wrap: break-word; white-space: pre-wrap;">
            {"contractData":{"amount":6414680,"owner_address":"TMXSPuwvw3A1PcMB2VssrXKfF26ANzfrcj",
            "to_address":"T9yssSMcwoSXkh4jVpXG8KPPzeAyA5WQk6"}}
        </pre>
    </body>
</html>'''

soup = BeautifulSoup(txt, 'lxml')
print(json.loads(soup.pre.text)['contractData']['amount'])