Не могу получить все данные от парсинга lamoda calendar

import aiohttp
import asyncio
from bs4 import BeautifulSoup as BS
from fake_useragent import UserAgent

data = {'login': 'логин', 'password': 'пароль',}
BASE_URL = "https://gm.lamoda.ru/"
HEADERS = {"User-Agent": UserAgent().random}

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get(BASE_URL, data = data, headers = HEADERS) as response:
            print('work')
            r = await aiohttp.StreamReader.read(response.content)
            soup = BS(r, "lxml")
            items = soup.find_all("div")
            print(items)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    print('start')
    loop.run_until_complete(main())

Вывод - )))))00


Ответы (1 шт):

Автор решения: Ivan

Сайт по указанному адресу является написан на фреймворке с динамическим рендером (в данном случае Vue.js) и, как следствие, рендер страницы происходит так:

  1. Загружается основная пустая страница, в <head> которой лежат .js файлы.
  2. Загружаются .js файлы
  3. Происходит отрисовка страницы этими .js файлами

Как мы видим в консоли, ровно так и происходит введите сюда описание изображения

Таким образом чтобы получить доступ к контекту страницы нужно выполнить .js. Для это нужно либо воспользоваться чем-то типа headless-браузером или начать выполнять js каким-либо внешним интерпретатором.

Документация по selenium с примером

→ Ссылка