user12447736
user12447736

Reputation: 25

Python Get Request All Pages

I have this code that I'm working with:

import requests
import json

def getMovieTitles(substr):
titles = []  
data = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}".format(substr))  
response = json.loads(data.content.decode('utf-8'))    
for page in range(0, response["total_pages"]):       
    page_response = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}&page={}".format(substr, page + 1))    
    page_content = json.loads(page_response.content.decode('utf-8'))
    #print ('page_content', page_content, 'type(page_content)', type(page_content))    
    for item in range(0, len(page_content["data"])):           
         titles.append(str(page_content["data"][item]["Title"]))  
titles.sort()  
return titles

print(getMovieTitles("spiderman"))

My issue is that it only returns the titles of the first page and not the second page. Guidance on where I'm going wrong would be appreciated

Upvotes: 2

Views: 10722

Answers (1)

Artyom Vancyan
Artyom Vancyan

Reputation: 5390

def getMovieTitles(substr):
    import requests
    url = "https://jsonmock.hackerrank.com/api/movies/search/?Title="

    response = requests.get(url)
    data = response.json()
    total_page = data['total_pages']
    per_page = data['per_page'] 
    titles = []

    for page in range(1, total_page + 1):
        content = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}&page={}".format(substr,page)).json()
        for per_p in range(per_page):
            titles.append(content['data'][per_p]['Title'])

    return sorted(titles)

Upvotes: 1

Related Questions