使用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
相关产品推荐
相关产品推荐

