Почему у вас не получается получить списки названий учебных заведений?

Как правильно спарсить названия учебных заведений с главной страницы сайта <a href="https://net-school.cap.ru/authorize/login" rel="nofollow">https://net-school.cap.ru/authorize/login</a>, если в коде я не вижу соответствующий тег? У меня возникла проблема: запрос не распознает этот тег. Ниже приведен использованный код: <br/> <br/> <pre><code class="html"># импортируем модуль
    import requests
    st_accept = "text/html" # говорим веб-серверу,
                            # что хотим получить html
    # имитируем подключение через браузер Mozilla на macOS
    st_useragent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_3_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15"
    # формируем хеш заголовков
    headers = {
       "Accept": st_accept,
       "User-Agent": st_useragent
    }
    # отправляем запрос с заголовками по нужному адресу
    req = requests.get("https://net-school.cap.ru/authorize/login", headers)
    # считываем текст HTML-документа
    src = req.text
    print(src)</code></pre>
  • 13 сентября 2024 г. 8:46
Ответы на вопрос 2
Чтобы получить названия учебных заведений с указанного сайта, вам нужно учитывать несколько важных моментов. Во-первых, если на странице используются динамические элементы (например, загружаемые через JavaScript), запрос `requests.get` может не получить эти данные, потому что библиотека `requests` работает только с статическим HTML-кодом.

1. **Проверьте структуру сайта**: Для начала откройте сайт в браузере и используйте инструменты разработчика (обычно они открываются по нажатию F12) для изучения структуры HTML, чтобы выяснить, как загружаются учебные заведения.

2. **Проверьте динамическую загрузку**: Если данные загружаются динамически через JavaScript, вы можете использовать библиотеку, такую как `Selenium`, которая позволяет вам эмулировать поведение браузера и взаимодействовать с элементами страницы.

3. **Код для использования `Selenium`**:
   
Если данные загружаются через JavaScript, вот пример того, как можно использовать `Selenium` для извлечения необходимых названий учебных заведений:

```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time

# Устанавливаем драйвер для браузера Chrome
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# Открываем страницу
driver.get("https://net-school.cap.ru/authorize/login")
time.sleep(3)  # Даем странице загрузиться

# Попробуем найти элементы с учебными заведениями
# Предположим, что они находятся внутри элемента c классом 'school-name'
schools = driver.find_elements(By.CLASS_NAME, 'school-name')  # Замените на правильный класс

# Получаем текст названий учебных заведений
for school in schools:
    print(school.text)

# Закрываем браузер
driver.quit()
```

4. **Обратите внимание на правила использования**: Убедитесь, что вы соблюдаете все правила использования сайта и не нарушаете условия обслуживания при выполнении парсинга данных. 

5. **Обработка исключений**: В реальном коде стоит добавить обработку исключений и дополнительные проверки, чтобы избежать сбоев в случае изменения структуры страницы или недоступности данных.

Надеюсь, это поможет вам корректно извлечь нужные данные!
Ты хотя бы в браузере пробовал открыть исходный код страницы (обычно Ctrl-U)? 
Это динамический сайт, там по умолчанию в body два с половиной скрипта, которые уже подтягивают остальной контент. Конечно, ты его не получишь одним запросом.
Выясняй, какой запрос скрипты делают для получения контента, и имитируй уже его. Консоль разработчика в помощь.
Похожие вопросы