怎么用脚本获取电影信息

wen 实用脚本 1

本文目录导读:

怎么用脚本获取电影信息

  1. 使用TMDB API(推荐)
  2. 使用豆瓣API(非官方)
  3. 使用OMDb API(免费)
  4. 网络爬虫方案
  5. 完整示例(本地文件读取)
  6. 使用建议

我来介绍几种获取电影信息的脚本方法,包括使用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)

使用建议

  1. 优先选择TMDB API:数据完整,官方支持,免费
  2. 注意API限流:免费API有调用次数限制
  3. 法律合规:爬虫获取数据需遵守网站robots协议
  4. 数据缓存:避免频繁请求,使用数据库或文件缓存

需要我详细解释某个具体部分,或者你有特定需求也可以告诉我!

抱歉,评论功能暂时关闭!