TransWikia.com

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

Stack Overflow на русском Asked by ShevchukAndry on November 22, 2021

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

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’
Извините сразу,я только учусь это делать,если я задаю банальный или глупый вопрос

One Answer

import requests
import json
from bs4 import BeautifulSoup as BS

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)

Answered by Alex on November 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP