Держи, проверил у себя все ок, скажи если будут проблемы.
import requests
import json
from bs4 import BeautifulSoup
def safe_get(data, *keys, default='N/A':
current = data
for key in keys:
if isinstance(current, dict):
current = current.get(key)
else:
return default
if current is None:
return default
return current if current is not None else default
def parse_movies(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f"Ошибка при запросе страницы: {response.status_code}"
return []
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
for item in movie_items:
try:
title_element = item.find_element(By.CLASS_NAME, 'ipc-title__text'
title = title_element.text
except:
title = 'Название не найдено'
print(f"Название: {title}"
except Exception as ex:
print(f"Произошла ошибка: {ex}"
finally:
print("Нажмите Enter, чтобы закрыть браузер..."
input()
driver.quit()
print("Браузер закрыт"
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
# Настройка Selenium
chrome_options = Options()
chrome_options.add_argument("--headless" # Запуск в фоновом режиме
service = Service('path/to/chromedriver' # Укажите путь к chromedriver
driver = webdriver.Chrome(service=service, options=chrome_options)
# Ждем загрузки страницы
time.sleep(5) # Можно заменить на явное ожидание элементов
# Получаем HTML-код страницы
html = driver.page_source
driver.quit()
# Парсим данные
soup = BeautifulSoup(html, 'html.parser'
movies_info = []
for movie in soup.find_all('li', class_='ipc-metadata-list-summary-item':
title_element = movie.find('h3', class_='ipc-title__text'
metadata_elements = movie.find_all('span', class_='sc-300a8231-7'
if title_element and metadata_elements:
title = title_element.text.strip()
year = metadata_elements[0].text.strip() if len(metadata_elements) > 0 else 'N/A'
duration = metadata_elements[1].text.strip() if len(metadata_elements) > 1 else 'N/A'
# Выводим результаты
for movie in movies_info:
print(
f"Название: {movie['title']}, Год: {movie['year']}, Длительность: {movie['duration']}, Рейтинг: {movie['rating']}, Возрастное ограничение: {movie['age_rating']}"
)