Kurzanleitung: Search Console-App in Python ausführen

Diese Beispiel-Web-App druckt die Liste der Websites, auf die Sie zugreifen können, sowie die Sitemaps, für jede dieser Websites.

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

Für dieses Beispiel passen Sie das Beispiel OAuth 2.0 für Webserveranwendungen an. . Diese Python-Beispiel-App verwendet das flask-Webanwendungs-Framework, um eine webbasierte Anwendung, die OAuth-Schlüssel verwaltet und eine Google Cloud API aufruft. Ich passt das verknüpfte Beispiel an, um die Search Console API aufzurufen, und druckt die Ergebnisse auf einer Webseite.

Befolgen Sie die Einrichtungsanleitung auf der oben verlinkten OAuth-Beispielseite und kopieren Sie die Beispielcode und ändern Sie den Code dann wie unten gezeigt. Beachten Sie insbesondere die Einrichtungsanleitung für Ihre Programmierumgebung, Einrichten (oder Wiederverwenden) eines Projekts die in der Google Cloud Console auf die Search Console API zugreifen und Anmeldedaten generieren für eine Webanwendung.

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

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

Wenn Sie von einer Google App Engine aus auf den Google API Python-Client zugreifen müssen müssen Sie ein Dienstkonto um Ihre Berechtigungen zu verwalten.

Änderungen

Wenn Sie der Anleitung auf der verlinkten OAuth2-Beispielseite folgen, folgende Änderungen:

  1. Die Google Search Console API statt der Drive API aktivieren
  2. Kopieren Sie die Beispielanwendung am Ende des oben verlinkten Dokuments und ersetzen Sie diese

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

  3. Text der Python-Sprache ersetzen test_api_request() mit dem 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 manuell festlegen in der Bash-Umgebung auf 1 gesetzt: export OAUTHLIB_INSECURE_TRANSPORT=1. Wenn Sie Fehlermeldungen erhalten, dass HTTPS zum Ausführen der Beispiel-App erforderlich ist, versuchen Sie, .