Как соскрести названия фильмов на динамичном сайте?Python

Программы на Python
Ответить
Anonymous
 Как соскрести названия фильмов на динамичном сайте?

Сообщение Anonymous »

Как я могу проанализировать названия фильмов, сайт динамичен, а фильмы загружаются 25 приращениями. Используя BS4, я могу анализировать только первые 25 https://www.imdb.com/chart/top/
import requests
from bs4 import BeautifulSoup

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 []

soup = BeautifulSoup(response.text, 'html.parser')
movies_info = []

for movie in soup.find_all('li', class_='ipc-metadata-list-summary-item sc-4929eaf6-0 DLYcv cli-parent'):
title_element = movie.find('h3', class_='ipc-title__text')

metadata_elements = movie.find_all('span', class_='sc-300a8231-7 eaXxft cli-title-metadata-item')

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'

rating_element = movie.find('span', class_='ipc-rating-star--rating')
rating = rating_element.text.strip() if rating_element else 'N/A'

age_rating = metadata_elements[-1].text.strip() if metadata_elements else 'N/A'

movies_info.append({
'title': title,
'year': year,
'duration': duration,
'rating': rating,
'age_rating': age_rating
})

return movies_info

url = 'https://www.imdb.com/chart/moviemeter/'
movies = parse_movies(url)

for movie in movies:
print(
f"Название: {movie['title']}, Год: {movie['year']}, Длительность: {movie['duration']}, Рейтинг: {movie['rating']}, Возрастное ограничение: {movie['age_rating']}")


Подробнее здесь: https://stackoverflow.com/questions/793 ... namic-site
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»