Python BeautifulSoup Найти данные внутри переменной - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь использовать BeautifulSoup для получения некоторых данных с веб-сайта, данные возвращаются следующим образом

window._sharedData = {
  "config": {
    "csrf_token": "DMjhhPBY0i6ZyMKYQPjMjxJhRD0gkRVQ",
    "viewer": null,
    "viewerId": null
  },
  "country_code": "IN",
  "language_code": "en",
  "locale": "en_US"
}

Как я могу импортировать их в json.loads, чтобы я мог извлечь данные?

1 Ответ

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

Вам нужно сначала изменить его на формат json, удалив имя переменной и проанализировав его как строку:

import json
from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
text = soup.find('script').text
text = text.replace('window._sharedData = ', '')

data = json.loads(text)
country_code = data['country_code']

Или вы можете использовать функцию eval для преобразовать его в словарь python. Для этого вам нужно заменить json типов на python и проанализировать его в формате словаря:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
text = soup.find('script').text

text = text.replace('null', None)
text = text.replace('window._sharedData = ', '')

data = eval(text)
country_code = data['country_code']

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