@pphhpphh

Как запарсить div class (mamba)?

import requests
from bs4 import BeautifulSoup
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"}
url = "https://mamba.ru/ru/rating/"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "lxml")
data = soup.find("div", class_="sc-jTcFUO jjyXNX")
print(data)

Не получается запарсить ниодин див, только find_all работает, что делать? На других сайтах все работает, думаю что из за пробелов в названии класса
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
pphhpphh, поучи немножко, как веб работает, перед тем как парсеры писать. Сэкономишь кучу времени потом.
Сейчас далеко не 90е, и на большинстве страниц полно JS-скриптов. Они, в том числе, могут делать фоновые (без перезагрузки страницы) запросы по ходу работы сайта. Так, например, реализуется "бесконечная лента" - по достижению низа страницы делается фоновый запрос, и новый контент подставляется вниз.
Некоторые сайты на этом вообще целиком построены - отдают основным запросом только болванку, а содержимое туда подсовывают фоновыми запросами. Как следствие, то, что ты выкачиваешь через requests, и то, что увидит пользователь в браузере - две большие разницы.
Соответственно, тут нужно:
1. Идентифицировать, какие фоновые запросы делает сайт. Инструменты разработчика в браузере в помощь.
2. Определить, какие из этих запросов подгружают нужную тебе информацию, и в каком виде она представлена. Нередко там не HTML-разметка, а формат JSON, с которым куда проще работать.
3. Определить, что нужно для выполнения этих запросов: какие URL дёргать, какие параметры подставлять, и т.д.
4. Попробовать имитировать только эти запросы.
Успех зависит от сайта, многие пытаются защищаться от такого, кто во что горазд.

Альтернативный вариант - использовать безголовый браузер. Но там своя гора проблем: это куда более ресурсоёмко, нужно дождаться полной прогрузки сайта, API для поиска там тоже своё. Так что я бы переходил к этому варианту только если имитировать запросы самому не вышло.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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