Когда я запускаю этот код, он возвращает «[]». Как я могу это исправить? - PullRequest
0 голосов
/ 08 января 2019

Мой первый вопрос в 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)

Я хочу увидеть имена людей, которым нравится фотография, но мне не понравилось.

1 Ответ

0 голосов
/ 09 января 2019

Прежде всего, для очистки вы должны использовать предварительно скомпилированную библиотеку, такую ​​как Anaconda. Загрузите его здесь: https://www.anaconda.com/download/ и запомните, где находится путь к вашему исполняемому файлу Python.

Вы вернулись с пустым списком, потому что Instagram использует Javascript. Requests не может перевести javascript в html для вас, поэтому вам нужно использовать более надежный метод, такой как селен.

Попробуйте что-то вроде этого:

Установка Selenium

В вашем терминале:

conda install selenium

Скачать Chromedriver

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.

...