Kurzanleitung: Search Console-App in Python ausführen

Diese Beispiel-Web-App gibt die Liste der Websites, auf die du zugreifen kannst, und gegebenenfalls die Sitemaps für jede dieser Websites aus.

Voraussetzungen

Zum Ausführen dieses Programms benötigen Sie Folgendes:

  • Zugriff auf das Internet und einen Webbrowser zum Autorisieren der Beispiel-App.
  • Ein Google-Konto mit mindestens einer Website, die in der Google Search Console bestätigt wurde.
  • Python 3 und das flask-Framework für Webanwendungen

Anleitung

In diesem Beispiel passen Sie die Beispielanwendung OAuth 2.0 für Webserveranwendungen an. Diese Python-Beispielanwendung verwendet das flask-Webanwendungs-Framework, um eine webbasierte Anwendung auszuführen, die OAuth-Schlüssel verwaltet und eine Google Cloud API aufruft. Dazu passen Sie das verlinkte Beispiel so an, dass die Search Console API aufgerufen und die Ergebnisse auf einer Webseite ausgegeben werden.

Folgen Sie der Einrichtungsanleitung auf der oben verlinkten OAuth-Beispielseite, kopieren Sie den Beispielcode und ändern Sie ihn dann wie unten gezeigt. Folgen Sie insbesondere der Anleitung für Ihre Programmierumgebung, richten Sie ein Projekt ein, das in der Google Cloud Console auf die Search Console API zugreifen kann, und generieren Sie Anmeldedaten für eine Webanwendung.

Sie verwenden das vollständige Codebeispiel für Python als Quellcode für dieses Beispiel.

Im Abschnitt Änderungen unten erfahren Sie, welche Änderungen Sie an den verlinkten Anleitungen vornehmen müssen.

Wenn Sie von einem Google App Engine-Projekt aus auf den Google API Python-Client zugreifen müssen, benötigen Sie ein Dienstkonto, um Ihre Berechtigungen zu verwalten.

Änderungen

Wenn Sie der Anleitung auf der verlinkten Oauth2-Beispielseite folgen, nehmen Sie folgende Änderungen vor:

  1. Die Google Search Console API statt der Drive API aktivieren
  2. Kopieren Sie die Beispielanwendung am Ende des oben verlinkten Dokuments für die nicht aktiven Nutzer und ersetzen Sie

    SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
    API_SERVICE_NAME = 'drive'
    API_VERSION = 'v2'
    
    durch Folgendes:
    SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
    API_SERVICE_NAME = 'searchconsole'
    API_VERSION = 'v1'
    

  3. Ersetzen Sie den Text der Funktion test_api_request() in der Python-Sprache durch den folgenden Code:

    @app.route('/test')
    def test_api_request():
      if 'credentials' not in flask.session:
        return flask.redirect('authorize')
    
      # Load credentials from the session.
      credentials = google.oauth2.credentials.Credentials(
          **flask.session['credentials'])
    
      # Retrieve list of properties in account
      search_console_service = googleapiclient.discovery.build(
          API_SERVICE_NAME, API_VERSION, credentials=credentials)
      site_list = search_console_service.sites().list().execute()
    
      # Filter for verified URL-prefix websites.
      verified_sites_urls = [s['siteUrl'] for s in site_list['siteEntry']
                            if s['permissionLevel'] != 'siteUnverifiedUser'
                            and s['siteUrl'].startswith('http')]
    
      # Print the sitemaps for all websites that you can access.
      results = '<!DOCTYPE html><html><body><table><tr><th>Verified site</th><th>Sitemaps</th></tr>'
      for site_url in verified_sites_urls:
    
        # Retrieve list of sitemaps submitted
        sitemaps = search_console_service.sitemaps().list(siteUrl=site_url).execute()
        results += '<tr><td>%s</td>' % (site_url)
    
        # Add a row with the site and the list of sitemaps
        if 'sitemap' in sitemaps:
          sitemap_list = "<br />".join([s['path'] for s in sitemaps['sitemap']])
        else:
          sitemap_list = "<i>None</i>"
        results += '<td>%s</td></tr>' % (sitemap_list)
    
      results += '</table></body></html>'
    
      # Save credentials back to session in case access token was refreshed.
      # ACTION ITEM: In a production app, you likely want to save these
      #              credentials in a persistent database instead.
      flask.session['credentials'] = credentials_to_dict(credentials)
    
      return results
    
    

  4. In unseren Tests mussten wir OAUTHLIB_INSECURE_TRANSPORT in der Bash-Umgebung export OAUTHLIB_INSECURE_TRANSPORT=1 manuell auf 1 setzen. Wenn Sie Fehlermeldungen bezüglich HTTPS erhalten, das zum Ausführen der Beispielanwendung erforderlich ist, legen Sie diese Variable fest.