Выводится проблема при парсинге "You need to enable JavaScript to run this app"

Всем привет! Пишу программу для парсинга сайта вуза, потом буду оборачивать в тг бота. Но почему-то информация с сайта не подтягивается. Я не могу понять почему так. Использую BeatifulSoup и requests. Я ещё новенький в этом, толком на разбираюсь в этом.

from bs4 import BeautifulSoup
import requests


def get_guide():
    headers = {
        'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
    }

    url = 'https://start.tpu.ru/guide/1'
    r = requests.get(url=url, headers=headers)

    soup = BeautifulSoup(r.text,'lxml')

    guide_boxes = soup.findAll('div', class_='guide-box')

    for guide in guide_boxes:
        guide_title = guide.find('h5').text.strip()
        guide_desc = guide.find('p').text.strip()

        print(f'{guide_title}\n{guide_desc}')

get_guide()

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

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

Посмотрите, всё ли правильно с полученными данными. Во-первых, вы можете проверить, что вы получили ответ с сервера (убедитесь, что ваш запрос не вернул код ошибки). Во-вторых, убедитесь, что вы получили правильный HTML код страницы. В третьих, проверьте, что вы используете правильный селектор для поиска элементов. Попробуйте распечатать результат вызова soup.prettify(), чтобы увидеть, что находится внутри soup, и проверьте, что элементы, которые вы хотите найти, действительно присутствуют в HTML-коде. Если у вас есть какие-то подозрения в этом плане, вы можете использовать инструменты разработчика в браузере, чтобы посмотреть на HTML-код страницы.

Если в soup нет элементов, которые вы ожидаете найти, это может означать, что ваш запрос не удался, вы получили неправильный HTML-код или вы используете неправильный селектор. Чтобы понять, что именно произошло, вы можете:

  1. Проверить статус ответа с сервера (r.status_code). Если он равен 200, это означает, что всё в порядке, и проблема не связана с запросом. Если же статус отличен от 200, это может указывать на проблему с запросом.

  2. Проверить содержимое ответа с сервера (r.text). Если вы видите в нём HTML-код, это означает, что запрос успешен, и проблема не связана с ним. Если же вы видите какие-то ошибки или сообщения об ошибках, это может быть причиной неудачи парсинга.

  3. Проверить содержимое soup с помощью метода prettify

→ Ссылка
Автор решения: DiMithras

Обычно в таких случаях помогает CloudScraper, но сайт довольно интересный, даже если в браузере посмотреть первый запрос, то там выдаёт то же самое, мол включите JS, чтобы смотреть сайт.
В браузере, Карл!

Также сайты, которые уповают на JS можно открывать через httpx:

import httpx
client = httpx.Client(http2=True)
r = client.get("https://start.tpu.ru/guide/1")
r.content

Но и тут выдаёт всё тот же robots… Т.е. то что должен обходить cloudscraper. Поэтому, как Сергей Ш ? написал в комментарии к вопросу, необходимо просто найти нужный запрос и повторить его. https://start.tpu.ru/guide.json содержит необходимые данные из которых и составляется страница.

Из чего делаем вывод: проблема не в js, и cloudscraper нормально отрабатывает, но GET запрос с ним выдаёт чушь, ту же самую чушь он выдаёт и в браузере. Поэтому берём необходимый запрос и получаем данные.

import json
r = s.get('https://start.tpu.ru/guide.json')
json.loads(r.content)
Вывод:
[{'content': '<div class="row">\n'
             '\t<div class="col-md-6">\n'
             '\t\t<div class="guide-box">\n'
             '\t\t\t<div class="title back_gc1"></div>\n'
             '\t\t\t<h5>126 лет истории</h5>\n'
             '\t\t\t<p>Томский политех был учрежден в 1896 году как Томский '
             'технологический институт практических инженеров имени императора '
             'Николая II. Он стал первым учебным заведением, выпускающим '
             'инженеров, на огромной территории от Волги до Тихого океана. И '
             'все эти годы Томский политех готовит инженерную элиту для '
             'развития страны. Кстати, в год рождения нашего университета '
             'братья Люмьер представили первый синематограф, родился поэт '
             'Сергей Есенин, а в Греции прошли первые современные Олимпийские '
             'игры.\n'
             '\t\t\t</p>\n'
             '\t\t</div>\n'
             '\n'
             '\t\t<div class="guide-box">\n'
             '\t\t\t<div class="title back_gc1"></div>\n'
             '\t\t\t<h5>Forbes рекомендует ТПУ</h5>\n'
             '\t\t\t<p>Седьмое место в ежегодном рейтинге лучших российских '
             'вузов по мнению редакции журнала — это показательно! Самая '
             'сильная позиция ТПУ — качество образования. Все остальное в '
             'твоих руках.\n'
             '\t\t\t</p>\n'
             '\t\t</div>\n'
             '\t</div>\n'
             '\t<div class="col-md-6">\n'
             '\t\t<div class="guide-box">\n'
             '\t\t\t<div class="title back_gc1"></div>\n'
             '\t\t\t<h5>170 000 выпускников!</h5>\n'
             '\t\t\t<p>Только представь! Среди выпускников Томского политеха — '
             'выдающиеся ученые, инженеры, руководители, специалисты в самых '
             'разных областях. О братстве политехников ходят легенды. Где бы '
             'ты ни оказался на работе или по работе, можешь рассчитывать на '
             'помощь и поддержку «своих», потому что политехники есть '
             'практически везде.\n'
             '\t\t\t</p>\n'
             '\t\t</div>\n'
             '\t\t<div class="guide-box">\n'
             '\t\t\t<div class="title back_gc1"></div>\n'
             '\t\t\t<h5>Кампус — город в городе</h5>\n'
             '\t\t\t<p>Все известные университеты мира имеют свои кампусы. '
             'Томский политех не исключение. \n'
             '\t\t\t<b class="b_gc">32</b> учебных и лабораторных корпуса, <b '
             'class="b_gc">15</b> студенческих общежитий на \n'
             '\t\t\tобщей площади <b class="b_gc">329 000</b> кв. м., \n'
             '\t\t\t<b class="b_gc">7000</b> персональных компьютеров и \n'
             '\t\t\t<b class="b_gc">200</b> зон Wi-Fi, скалодром, стадион, \n'
             '\t\t\tбассейн, библиотека, культурный \n'
             '\t\t\tцентр и так далее. Но главное — \n'
             '\t\t\tлюди! Более <b class="b_gc">11 500</b> студентов, среди '
             'которых почти <b class="b_gc">3000</b> иностранцев \n'
             '\t\t\tиз более чем <b class="b_gc">50</b> стран мира. Со \n'
             '\t\t\tвсеми ты вряд ли познакомишься, \n'
             '\t\t\tно некоторые станут твоими друзьями на всю жизнь.\n'
             '\t\t\t</p>\n'
             '\t\t</div>\n'
             '\t\t<div class="guide-box">\n'
             '\t\t\t<div class="title back_gc1"></div>\n'
             '\t\t\t<p class="mb-1">И запомни наш слоган:</p>\n'
             '\t\t\t<h5>#политехлучшевсех</h5>\n'
             '\t\t</div>\n'
             '\t</div>\n'
             '</div>',
  'id': 1,
  'name': 'Твой университет'},
 {'content': '<div class="row"><h3 class="mb-4 b_gc">КУДА СЕГОДНЯ БЕЗ '
             'ИНТЕРНЕТА?</h3><div class="col-md-6"><div class="guide-box '
             'guide_beauty_box_1"><p><b>Тебе нужно пройти регистрацию в '
             'качестве пользователя корпоративной сети TPU.</b> Первокурсникам '
             'логин и пароль до конца августа высылается на e-mail, который '
             'абитуриент указал при регистрации. После входа в систему у тебя '
             'будет свой почтовый ящик в домене @tpu.ru и доступ к '
             'информационным ресурсам корпоративной сети TPU. Сменить пароль '
             'можно по ссылке: https://user.tpu.ru/.</p></div><div '
             'class="guide-box guide_beauty_box_2"><h2>Важно!</h2><p>Wi-Fi '
             'доступен в Научно-технической библиотеке (НТБ), в Международном '
             'культурном tцентре (МКЦ), в Кибернетическом центре и в корпусах: '
             'главный, 1, 2, 3, 5, 8, 10, 11, 15, 18, 19, 20, 21. Главное — '
             'быть подключенным к домену TPU.</p></div></div><div '
             'class="col-md-6"><div class="guide-box"><p>Карточку с '
             'индивидуальной учетной записью необходимо сохранять в течение '
             'всего периода обучения. При утере регистрационной карты '
             'обращайся в бюро регистрации читателей НТБ (ул. Белинского, 53а, '
             'каб. 123).</p></div><div class="guide-box '
             'guide_beauty_box_3"><div>&#10006;</div><div>Подробная информация '
             'и инструкции по подключению Wi-Fi: <a '
             'href="https://staff.tpu.ru/html/wifi" '
             'target="_blank">staff.tpu.ru/html/wifi</a></div></div></div></div> '
             '<div class="row"><div class="col-12">В случае проблем с '
             'настройками Wifi обращайся по <b>e-mail: <a '
             'href="mailto:[email protected]">[email protected]</a></b></div></div> <div '
             'class="row"><div class="col-12"> <h4 class="mt-4">Еще несколько '
             'полезных ссылок:</h4> <ul> <li><a href="http://rasp.tpu.ru/" '
             'target="_blank">Расписание занятий</a></li> <li><a '
             'href="https://mail.tpu.ru" target="_blank">Корпоративная '
             'электронная почта</a></li> <li><a '
             'href="https://staff.tpu.ru/personal" target="_blank">Телефонный '
             'справочник</a></li> <li><a href="https://opac.lib.tpu.ru" '
             'target="_blank">Электронный каталог</a></li> <li><a '
             'href="https://staff.tpu.ru/html/myq" target="_blank">Печать '
             'MyQ</a></li> <li><a href="https://stud.lms.tpu.ru/" '
             'target="_blank">Онлайн-обучение</a></li> <li><a '
             'href="https://staff.tpu.ru/html/it" target="_blank">Другие '
             'цифровые сервисы ТПУ</a></li> </ul> </div></div>',
…
→ Ссылка