Asyncio API wrapper for the Google Custom Search JSON API.
pip3 install -U async_cse
pip3 install -U git+https://github.com/crrapi/async-cse
import async_cse
client = async_cse.Search("Your API Key") # create the Search client (uses Google by default!)
results = await client.search("Python", safesearch=False) # returns a list of async_cse.Result objects
first_result = results[0] # Grab the first result
print(first_result.title, first_result.description, first_result.url, first_result.image_url) # Title, snippet, URL, and Image URL (if specified)
await client.close() # Run this when cleaning up.To get image results with the default engine, use image_search=True when searching, like so:
await client.search("Python", safesearch=False, image_search=True) # returns a list of async_cse.Result objectsTo use Search objects with a custom search engine, provide the ID of the search engine.
async_cse.Search("Your API Key", engine_id="015786823554162166929:mywctwj8es4")SafeSearch can also be turned off by setting safesearch=False when using the search() method.
You can get an API key by going here and scrolling down to the API key section.
Key shuffling may be used as a fail-safe for keys that run out of requests, effectively giving you +100 requests for each key passed.
Just pass a list of keys when instantiating your Search client.
Here's a demonstration of this:
import async_cse
client = async_cse.Search(["API Key 1", "API Key 2", "API Key 3"]) # Multiple keys as a list
await client.search("Python") # Uh oh, one of these keys doesn't work! Trying again with another...When async-cse detects a non-working key, it will remove it from its internal list and retry the search.

