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

使用Python获取全页电影列表时,代码无法返回分页信息及函数结果求助

代码问题修复

先列几个导致无法获取数据的核心错误:

  • 模块导入错误:原代码写的import request,正确应该是import requests(少了末尾的s),这会直接导致请求无法发送。
  • 初始URL格式错误:字符串里单引号和双引号混用,导致format方法失效,URL拼接错误。原写法"https://jsonmock.hackerrank.com/api/movies/search/?Title={}'.format(substr)"会把{'.format(substr)直接拼进URL,导致请求返回错误内容。
  • 分页请求URL错误:多余的闭合大括号{}}会导致参数错误,同时&是HTML转义字符,在Python字符串里应该直接用&。

修正后的完整代码:

import requests     
import json


def getMovieTitles(substr):
    titles = []
    # 修正URL格式化方式
    url = f"https://jsonmock.hackerrank.com/api/movies/search/?Title={substr}"
    data = requests.get(url)
    # 直接用response.json()更简洁,不用手动解码和loads
    response = data.json()
    
    for page in range(1, response['total_pages'] + 1):
        # 修正分页URL的格式问题
        page_url = f"https://jsonmock.hackerrank.com/api/movies/search/?Title={substr}&page={page}"
        page_response = requests.get(page_url)
        page_content = page_response.json()
        
        # 直接遍历data列表,不用range索引
        for item in page_content['data']:
            titles.append(item['Title'])
    
    titles.sort()  
    return titles

print(getMovieTitles('Superman'))

额外优化点:

  • 用response.json()替代json.loads(data.content.decode('utf-8')),requests库已经封装了解析JSON的方法,更简洁可靠。
  • 遍历分页时直接从1到total_pages(包含),不用range(0, total_pages)再加1,逻辑更清晰。
  • 遍历data时直接迭代列表元素,不用通过索引访问,代码更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:15:43