import requests
from bs4 import BeautifulSoup
import urllib

# 爬取豆瓣电影分类排行榜 - 喜剧片
url = 'https://movie.douban.com/chart'
params = {
    'type': '24',
    'interval_id': '100:90',
    'action': '',
    'start': '0',
    'limit': '10'
}

response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')

# 解析电影列表
movie_list = soup.find(class_='grid_view').find_all('li')

for movie in movie_list:
    # 获取电影名称和评分
    movie_name = movie.find(class_='title').text
    movie_rating = movie.find(class_='rating_num').text

    # 获取电影详情页链接
    movie_detail_link = movie.find('a')['href']

    # 请求电影详情页
    movie_detail_response = requests.get(movie_detail_link)
    movie_detail_soup = BeautifulSoup(movie_detail_response.text, 'html.parser')

    # 获取电影下载链接
    download_link = movie_detail_soup.find('a', text='[下载]')['href']
    
    # 下载电影视频
    video_file = f'{movie_name}.mp4'
    urllib.request.urlretrieve(download_link, video_file)
    
    # 获取电影音频链接
    audio_link = movie_detail_soup.find('a', text='[音频]')['href']
    
    # 下载电影音频
    audio_file = f'{movie_name}.mp3'
    urllib.request.urlretrieve(audio_link, audio_file)
    
    # 打印电影信息
    print(f'电影名称:{movie_name}')
    print(f'评分:{movie_rating}')
    print(f'视频文件名:{video_file}')
    print(f'音频文件名:{audio_file}')
    print('------------------------')

错误的原因: 在解析网页时,未能找到class为'article'的元素,导致无法继续查找class为'item'的元素。可能的原因是网页结构发生了变化,导致无法正确地找到相应的元素。

解决方法: 使用另一种方式来定位电影列表的元素,例如使用class为'grid_view'的元素来定位电影列表。

修改后的代码: 使用class为'grid_view'的元素来定位电影列表,同时也对获取电影名称和评分的代码进行了相应的修改。

注意: 该代码可能需要根据豆瓣电影网站的实际情况进行调整。


原文地址: http://www.cveoy.top/t/topic/fQYC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录