本文目录导读:

我来介绍几种获取电影信息的脚本方法,包括使用API和网页爬取:
使用TMDB API(推荐)
import requests
import json
def get_movie_info_tmdb(movie_name, api_key):
"""
从TMDB获取电影信息
"""
# 搜索电影
search_url = "https://api.themoviedb.org/3/search/movie"
params = {
'api_key': api_key,
'query': movie_name,
'language': 'zh-CN'
}
response = requests.get(search_url, params=params)
data = response.json()
if data['results']:
movie = data['results'][0]
movie_id = movie['id']
# 获取详细信息
detail_url = f"https://api.themoviedb.org/3/movie/{movie_id}"
detail_params = {
'api_key': api_key,
'language': 'zh-CN'
}
detail_response = requests.get(detail_url, params=detail_params)
detail_data = detail_response.json()
return {
'title': detail_data.get('title'),
'original_title': detail_data.get('original_title'),
'overview': detail_data.get('overview'),
'release_date': detail_data.get('release_date'),
'rating': detail_data.get('vote_average'),
'genres': [genre['name'] for genre in detail_data.get('genres', [])],
'runtime': detail_data.get('runtime'),
'poster_path': f"https://image.tmdb.org/t/p/w500{detail_data.get('poster_path')}"
}
return None
# 使用示例
# 需要先在TMDB官网注册获取API Key
# api_key = 'your_tmdb_api_key_here'
# movie_info = get_movie_info_tmdb('蜘蛛侠', api_key)
使用豆瓣API(非官方)
import requests
from bs4 import BeautifulSoup
def get_movie_info_douban(movie_name):
"""
从豆瓣获取电影信息
"""
# 豆瓣搜索URL
search_url = "https://www.douban.com/search"
params = {
'q': movie_name,
'cat': '1002' # 电影分类
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(search_url, params=params, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析电影信息
results = soup.find_all('div', class_='result')
if results:
first_result = results[0]
movie_title = first_result.find('img', class_='nbg')
movie_info = {
'title': movie_title.get('alt') if movie_title else '未知',
'link': movie_title.get('href') if movie_title else '',
'rating': '',
'actors': [],
'director': ''
}
# 继续解析详细信息...
return movie_info
# 使用示例
# movie_info = get_movie_info_douban('黑客帝国')
使用OMDb API(免费)
import requests
def get_movie_info_omdb(movie_name, api_key='your_omdb_api_key'):
"""
从OMDb获取电影信息
"""
url = "http://www.omdbapi.com/"
params = {
'apikey': api_key,
't': movie_name,
'type': 'movie'
}
response = requests.get(url, params=params)
data = response.json()
if data.get('Response') == 'True':
return {
'title': data.get('Title'),
'year': data.get('Year'),
'rating': data.get('imdbRating'),
'director': data.get('Director'),
'actors': data.get('Actors').split(', '),
'plot': data.get('Plot'),
'poster': data.get('Poster')
}
return None
# 使用示例
# movie_info = get_movie_info_omdb('Inception')
网络爬虫方案
import requests
from bs4 import BeautifulSoup
import re
def get_movie_info_crawler(movie_name):
"""
爬取豆瓣电影信息(示例)
"""
# 构建搜索URL
search_url = f"https://movie.douban.com/subject_search?search_text={movie_name}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'
}
try:
response = requests.get(search_url, headers=headers)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
# 解析电影信息(根据实际页面结构调整)
# 示例:
movies = []
# 这里是示例,实际需要根据页面结构调整
# ...
return movies
except Exception as e:
print(f"爬取失败: {e}")
return None
完整示例(本地文件读取)
import json
import os
def get_movie_info_local(file_path):
"""
从本地JSON文件读取电影信息
"""
try:
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
return data
except FileNotFoundError:
return None
def save_movie_info(file_path, data):
"""
保存电影信息到文件
"""
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
# 使用示例
# movie_data = {
# 'title': '肖申克的救赎',
# 'rating': 9.4,
# 'actors': ['蒂姆·罗宾斯', '摩根·弗里曼']
# }
# save_movie_info('movie_info.json', movie_data)
使用建议
- 优先选择TMDB API:数据完整,官方支持,免费
- 注意API限流:免费API有调用次数限制
- 法律合规:爬虫获取数据需遵守网站robots协议
- 数据缓存:避免频繁请求,使用数据库或文件缓存
需要我详细解释某个具体部分,或者你有特定需求也可以告诉我!