You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用IMDbPy获取剧集ID时遭遇InvalidURL错误求助

修复IMDbPy获取剧集信息的URL错误及字段提取方案

错误原因

你碰到的http.client.InvalidURL错误,是因为生成的请求URL里混进了剧集名称(比如The Last of Us)而非正确的IMDb剧集ID。问题出在search_movie默认返回全类型结果,第一个结果可能不是剧集,导致获取的ID异常,最终生成带空格的无效URL。

修复代码及字段提取

1. 正确获取剧集对象

搜索时限定只返回剧集类型,确保拿到的是有效剧集ID:

from imdb import IMDb

ia = IMDb()
movie_name = "The Last of Us"
# 限定搜索结果为剧集(tv类型)
results = ia.search_movie(movie_name, results='tv')

if not results:
    print("没找到对应剧集")
    exit()

# 获取正确的剧集ID
movie_id = results[0].getID()
# 获取剧集详情,包含基础信息
movie = ia.get_movie(movie_id)

2. 提取所需的剧集及单集字段

调用update方法加载剧集信息,然后遍历季和集提取数据:

# 加载剧集的所有季/集数据
ia.update(movie, 'episodes')

# 遍历每一季
for season_num, episodes in movie['episodes'].items():
    # 遍历该季的每一集
    for episode_num, episode in episodes.items():
        # 提取你需要的字段,没有的字段用默认值填充
        extracted_data = {
            'title': movie['title'],          # 剧集标题
            'year': movie['year'],            # 剧集播出年份
            'rating': movie.get('rating', '暂无评分'),  # 剧集整体评分
            'season': season_num,             # 季数
            'episode_number': episode_num,    # 集数
            'episode_title': episode['title'],# 单集标题
            'episode_rating': episode.get('rating', '暂无评分'),  # 单集评分
            'genres': movie.get('genres', []) # 剧集类型
        }
        # 打印或保存数据
        print(extracted_data)

关键说明

  • 用results='tv'过滤搜索结果,避免拿到电影、综艺等非剧集内容,确保ID正确。
  • 使用ia.update(movie, 'episodes')加载剧集的季/集数据,比直接调用get_movie_episodes更稳妥。
  • 用get()方法获取字段,避免因为部分信息缺失导致报错。

内容的提问来源于stack exchange,提问作者zedmahdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:47:55