Home:ALL Converter>Use the Google Custom Search API to search the web from Python

Use the Google Custom Search API to search the web from Python

Ask Time:2015-04-25T07:42:33         Author:ShowLove

Json Formatter

I'm a newbee in Python, HTML and CSS and am trying to reverse engineer "https://github.com/scraperwiki/google-search-python" to learn the three and use the Google Custom Search API to search the web from Python. Specifically, I want to search the search engine I made through Google Custom Search "https://cse.google.com/cse/publicurl?cx=000839040200690289140:u2lurwk5tko"I looked through the code made some minor adjustments and came up with the following. "Search.py"

import os
from google_search import GoogleCustomSearch
#This is for the traceback
import traceback
import sys

#set variables
os.environ["SEARCH_ENGINE_ID"] = "000839...   "
os.environ["GOOGLE_CLOUD_API_KEY"] = "AIza...   "

SEARCH_ENGINE_ID = os.environ['SEARCH_ENGINE_ID']                           
API_KEY = os.environ['GOOGLE_CLOUD_API_KEY']

api = GoogleCustomSearch(SEARCH_ENGINE_ID, API_KEY)

print("we got here\n")

#for result in api.search('prayer', 'https://cse.google.com/cse/publicurl?cx=000839040200690289140:u2lurwk5tko'):
for result in api.search('pdf', 'http://scraperwiki.com'):
    print(result['title']) 
    print(result['link']) 
    print(result['snippet']) 

print traceback.format_exc()

And the import ("At least the relevant parts") I believe comes from the following code in google_search.py

class GoogleCustomSearch(object):
    def __init__(self, search_engine_id, api_key):
        self.search_engine_id = search_engine_id
        self.api_key = api_key

    def search(self, keyword, site=None, max_results=100):
        assert isinstance(keyword, basestring)

        for start_index in range(1, max_results, 10):  # 10 is max page size
            url = self._make_url(start_index, keyword, site)
            logging.info(url)

            response = requests.get(url)
            if response.status_code == 403:
                LOG.info(response.content)
            response.raise_for_status()
            for search_result in _decode_response(response.content):
                yield search_result
                if 'nextPage' not in search_result['meta']['queries']:
                    print("No more pages...")
                    return

However, when I try to compile it, I get the following.

enter image description here

So, here's my problem. I cant quite figure out why the following lines of code don't print to the terminal. What am I overlooking?

print(result['title']) 
print(result['link']) 
print(result['snippet']) 

The only thing I can think of is that I didn't take a correct ID or something. I created a Google custom search and a project on Google developers console as the quick start suggested. Here is where I got my SEARCH_ENGINE_ID and GOOGLE_CLOUD_API_KEY from.

enter image description here enter image description here

After I added the stacktrace suggested in the comments I got this

enter image description here

Am I just misunderstanding the code, or is there something else I'm missing? I really appreciate any clues that will help me solve this problem, I'm kind of stumped right now.

Thanks in advance guys!

Author:ShowLove,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/29859277/use-the-google-custom-search-api-to-search-the-web-from-python
yy