kolumbou
@kolumbou
python, html, c#

Как запарсить json из html с помощью python?

Всем доброго времени суток.

Есть один код, который парсит html с помощью requests.get.

Далее из полученного html мне необходимо получить json ...

<script>
    try{
        try{
            var card = JSON.parse('{"CardPAN":"1234567890123456789","EndDate":"01.01.2016","TicketTypeDesc":"00.04 CardName","CityName":"City","CardSum":99,"Time":"01.09.2016 11:11:01"}');
        }
 ...


из которого мне необходим параметр CardSum.

Пытался с помощью beautifulsoup что-то вроде soup.find_all('try')) и soup.find_all('var')) и так далее - везде выходило пустое значение, очевидно потому что я не догоняю как работает сам soup, хотя документацию листаю уже не в первый раз.
Но даже если бы у меня получились бы не пустыми предыдущие примеры - я бы все равно получил json строку.
Как быть дальше - не знаю.
Возможно можно было бы забить результат в переменную, допустим card, и сделать
card.json()['CardSum'], но это только теория.

Намекните, будьте добры, как быть с этим делом?
  • Вопрос задан
  • 3222 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
decoded = json.loads(html_body)

дальше обычный словарь

b=decoded['result']['dns_domain']['items'].keys()

в html_body помещать JSON, т.е.

html_body = '{"CardPAN":"1234567890123456789","EndDate":"01.01.2016","TicketTypeDesc":"00.04 CardName","CityName":"City","CardSum":99,"Time":"01.09.2016 11:11:01"}'
Ответ написан
Комментировать
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Я так понимаю - проблема в основном - получение самой строки. Тут регулярками разве что.
Как-то так:

for line in your_html_body_by_line:
    res = re.match('.*JSON.parse\(\'(.*)\'\).*',line)
    if res:
         print json.loads(res.group(1))['CardPAN']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы