Мой первый вопрос в stackoverflow. Я новичок в Python, и я хочу запросить любую фотографию Instagram, но мой код возвращается пустым
import requests
from bs4 import BeautifulSoup
url = "https://www.instagram.com/p/BsYt_megGfN/"
r = requests.get(url)
soup = BeautifulSoup(r.content,"html.parser")
data = soup.findAll("div",{"class","Nm9Fw"})
print(data)
Я хочу видеть имена людей, которым нравится фотография, но я не сделал.
Прежде всего, для очистки вы должны использовать предварительно скомпилированную библиотеку, такую как Anaconda. Загрузите его здесь: https://www.anaconda.com/download/ и запомните, где находится путь к вашему исполняемому файлу python.
Вы вернулись с пустым списком, потому что Instagram использует Javascript. Requests не может перевести javascript в html для вас, поэтому вам нужно использовать более надежный метод, такой как селен.
Попробуйте что-то вроде этого:
В вашем терминале:
conda install selenium
http://chromedriver.chromium.org/downloads
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path="path-to-chromedriver",chrome_options=chrome_options)
driver.get("https://www.instagram.com/p/BsYt_megGfN/")
html_source = driver.page_source
driver.quit()
soup = BeautifulSoup(html_source,"html.parser")
data = soup.findAll("div",{"class","Nm9Fw"})
print(comments) # syntax for printing changes here for Python3
Запустите это с вашей Python-версией Anaconda.
soup.findAll
не находитdiv
с этимclass
в извлеченном html-содержимом.