使用Python编写爬虫自动爬取豆瓣电影TOP250排行榜中250部影片并利用BeautifulSoup4库提取相关信息包含基本信息排名海报片名评分导演主演上映时间上映地点类型热门短评与第一页前10名影片的前5条热门短评如果是5条短评请加上序号并用换行分隔如1这是一部好电影等
以下是使用Python编写的爬取豆瓣电影TOP250排行榜的代码:
import requests
from bs4 import BeautifulSoup
# 定义爬取函数
def get_movie_info(url):
# 发送HTTP请求,获取页面内容
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
response = requests.get(url, headers=headers)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.find_all('div', class_='item')
# 解析电影信息
movies = []
for movie in movie_list:
# 获取排名
rank = movie.find('em').text
# 获取电影海报
poster = movie.find('img')['src']
# 获取电影标题
title = movie.find('span', class_='title').text
# 获取评分
score = movie.find('span', class_='rating_num').text
# 获取导演和主演
info = movie.find('div', class_='bd').p.text.strip().split('\n')
director = info[0].strip().split(':')[1].strip()
actors = info[1].strip().split(':')[1].strip()
# 获取上映时间、上映地点和类型
details = movie.find('div', class_='bd').p.find_next_sibling().text.strip().split('/')
year = details[0].strip()
location = details[1].strip()
genre = details[2].strip()
# 获取热门短评
comments = movie.find('div', class_='star').find_next_sibling().find_all('span')
hot_comments = [comment.text for comment in comments[:5]]
# 构造电影信息字典
movie_info = {
'排名': rank,
'海报': poster,
'片名': title,
'评分': score,
'导演': director,
'主演': actors,
'上映时间': year,
'上映地点': location,
'类型': genre,
'热门短评': hot_comments
}
movies.append(movie_info)
return movies
# 主函数
def main():
# 爬取豆瓣电影TOP250排行榜的前10页
base_url = 'https://movie.douban.com/top250?start='
movies = []
for i in range(10):
url = base_url + str(i * 25)
movies.extend(get_movie_info(url))
# 输出电影信息
for movie in movies:
print('排名:', movie['排名'])
print('海报:', movie['海报'])
print('片名:', movie['片名'])
print('评分:', movie['评分'])
print('导演:', movie['导演'])
print('主演:', movie['主演'])
print('上映时间:', movie['上映时间'])
print('上映地点:', movie['上映地点'])
print('类型:', movie['类型'])
print('热门短评:')
for index, comment in enumerate(movie['热门短评']):
print(str(index+1) + '.' + comment)
print()
if __name__ == '__main__':
main()
这段代码会爬取豆瓣电影TOP250排行榜的前10页,每页包含25部电影,总共爬取250部电影。然后利用BeautifulSoup库解析页面,提取出电影的基本信息和热门短评,并将结果打印输出。
注意:由于豆瓣网站的反爬机制较强,建议添加适当的延时或使用代理IP来进行爬取
原文地址: http://www.cveoy.top/t/topic/hJEJ 著作权归作者所有。请勿转载和采集!