Ваш код правильный с точки зрения поиска элементов на HTML-странице. Проблема в самой странице Instagram. Если вы посмотрите на его источник (а не на панель «Элементы DevTools»), вы увидите, что он почти пустой. Instagram построен полностью с использованием JavaScript - антишаблон, но прочно укоренившийся - поэтому элементы, которые вы ищете, существуют в клиенте только после запуска JavaScript.
Вы можете сделать это, используя Selenium , который в основном открывает сайт в браузере и делает все, что делает обычный браузер. Например:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# initialization
driver = webdriver.Firefox()
driver.get("https://www.instagram.com/antedoro/")
try:
# wait up to 10 seconds for the parent of the spans to be present
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "Y8-fY")))
# locate the spans
spans = driver.find_elements_by_css_selectors("span.g47SY")
text_of_spans = [span.text for span in spans]
finally:
driver.close()