本文目录导读:

我来介绍几种获取电影信息的脚本方法,包括使用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协议
- 数据缓存:避免频繁请求,使用数据库或文件缓存
需要我详细解释某个具体部分,或者你有特定需求也可以告诉我!
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播