Как получить значения ключа в вложенном словаре?

Хочу спарсить все ссылки изображений из поста инстаграм,понял где можно найти их,этим местом оказался вложенный словарь,как его перебрать я не знаю Вот код

import requests
import json
from bs4 import BeautifulSoup as BS
import re

url = 'https://www.instagram.com/p/B5n2EXjF_1C/'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
JS_SHARED_DATA_PATTERN = re.compile('window._sharedData = ({.+});')

r = requests.get(url, headers=headers, allow_redirects=True)

soup = BS(r.content, 'html.parser')
script = soup.find('script', attrs={'type':"text/javascript"}, text=JS_SHARED_DATA_PATTERN)
m = JS_SHARED_DATA_PATTERN.search(script.text)
shared_data_text = m.group(1)
data = json.loads(shared_data_text)
print(data)

Если что,нужно получить информацию по ключу 'display_url' Извините сразу,я только учусь это делать,если я задаю банальный или глупый вопрос


Ответы (1 шт):

Автор решения: Alex
import requests
import json
from bs4 import BeautifulSoup as BS
import re

url = 'https://www.instagram.com/p/B5n2EXjF_1C/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
JS_SHARED_DATA_PATTERN = re.compile('window._sharedData = ({.+});')

r = requests.get(url, headers=headers, allow_redirects=True)

soup = BS(r.content, 'html.parser')
script = soup.find(
    'script', attrs={'type': "text/javascript"}, text=JS_SHARED_DATA_PATTERN)
m = JS_SHARED_DATA_PATTERN.search(script.text)
shared_data_text = m.group(1)
data = json.loads(shared_data_text)
array = data['entry_data']['PostPage'][0]['graphql']['shortcode_media']['edge_sidecar_to_children']['edges']

result = {}

for i, img in enumerate(array):
    result[i] = img['node']['display_url']

print(result)
→ Ссылка