[Python] Use a Python Generator to Crawl the Star Wars API

In this lesson, you will be introduced to Python generators. You will see how a generator can replace a common function and learn the benefits of doing so. You will learn what role the yield keyword provides in functions and how it differs from a return. Building on that knowledge, you will learn how to build a generator to recursively crawl an API (swapi.co) and return Star Wars characters from "The Force Awakens".

import json
import requests


def crawl(link):
    response = requests.get(link)
    api_rquests = json.loads(response.content)
    for character in api_rquests['results']:
        if 'https://swapi.co/api/films/7' in character['films']:
            yield character['name']        

    if 'next' in api_rquests and api_rquests['next'] is not None:
        next_page = crawl(api_rquests['next'])
        for page in next_page:
            yield page        

if __name__ == "__main__":
    force_awakens = crawl('https://swapi.co/api/people')
    for result in force_awakens:
        print(result)
原文地址:https://www.cnblogs.com/Answer1215/p/8245552.html