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

1

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

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

  • 0
    Пустой список означает, что soup.findAll не находит div с этим class в извлеченном html-содержимом.
  • 0
    Html-парсер для beautifulsoup не может разобрать javascript.
Теги:
python-requests
web-scraping
beautifulsoup

1 ответ

3

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

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

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

Установить селен

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

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.

  • 1
    Nitpick: Есть ли какая-то особая причина, по которой OP должен использовать Anaconda Python? BS и селен могут быть установлены в ванили через pip так же легко, как через conda, насколько мне известно
  • 0
    Я вижу, что op использует python 2.7, а селен проблематичен с 2.7
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню