Задать вопрос
@Neo01

Почему метод find_all из bs4 возвращает пустой список?

Мне нужно спарсить цифру (кол-во) подписчиков с аккаунта инстаграма. Передаю методу find_all тэг span и класс _ac2a, но find_all возвращает пустой список, хотя такой класс есть:
63c136920c88d158303056.jpeg
Причём данные с OLX (цена и описание) парсятся нормально

from bs4 import BeautifulSoup
import requests

estrade_url = 'https://www.instagram.com/estrade.pmk/'
page = requests.get(estrade_url)
soup = BeautifulSoup(page.text, 'lxml')
print(soup.find_all('span', class_='_ac2a'))
  • Вопрос задан
  • 293 просмотра
Подписаться Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
datka
@datka
spoiler
from bs4 import BeautifulSoup
import requests


headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}

estrade_url = 'https://www.instagram.com/estrade.pmk/'
page = requests.get(estrade_url,headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify())


Сравните ввыдод print(soup.prettify()) с тем что видите вы.
Без selenium тут не обойтись.
Я бы поступил так. Получил через селениум страницу. сохранил ее как index.html и дальше парсил.
Или не сохранял, а просто через селениум спарсил цифру.

Подход у всех разный
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
А ты уверен, что то, что ты видишь в браузере - это то же, что получает на вход BS?
Инста может либо детектить тебя как бота, и отдавать другую страницу, или просто использовать JS для динамической подгрузки контента, отдавая статически только "болванку". BS не выполняет JS код, так что болванка - это всё, что он увидит в таком случае.
Скинь page.text в файл и посмотри, что там.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы