豆瓣电影分类排行榜爬取 - 喜剧片
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 著作权归作者所有。请勿转载和采集!