快速入門導覽課程:在 Python 中執行 Search Console 應用程式

這個範例網頁應用程式會輸出你可以存取的網站清單,以及 Sitemap 如有興趣,請特別留意每個網站

需求條件

如要執行這項程式,您需要:

  • 連上網際網路和網路瀏覽器,以授權範例應用程式。
  • 擁有至少一個在 Google Search Console 中驗證網站的 Google 帳戶。
  • Python 3 和 flask 網頁應用程式架構。

操作說明

在這個範例中,您將調整網路伺服器應用程式適用的 OAuth 2.0 範例應用程式。這個 Python 應用程式範例使用 Flask 網路應用程式架構,執行可管理 OAuth 金鑰並呼叫 Google Cloud API 的網路應用程式。個人中心 會調整連結的範例,以便呼叫 Search Console API 結果網頁

按照上方連結的 OAuth 範例頁面上的設定說明操作,並複製 然後修改程式碼,如下所示。具體來說,請按照 程式設計環境設定操作說明、設定 (或重複使用) 專案 並產生憑證 適合網頁應用程式

您將使用 Complete 程式碼範例 以 Python 做為這個範例的原始碼

請參閱下方的「修改」一節,瞭解您需要對連結的操作說明進行哪些變更。

若您需要從 Google App Engine 存取 Google API Python 用戶端 您必須使用服務帳戶 來管理權限

修正規則

按照已連結 Oauth2 範例網頁上的指示進行操作時, 進行的變更:

  1. 啟用 Google Search Console API (而非 Drive API)。
  2. 請將範例應用程式複製到上方連結的 OAU 文件結尾, 然後將該部分

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

  3. 將 Python 語言 test_api_request() 函式的主體替換為以下程式碼:

    @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. 在測試中,我們必須手動設定 OAUTHLIB_INSECURE_TRANSPORT 變更為 Bash 環境中 1:export OAUTHLIB_INSECURE_TRANSPORT=1。 如果您收到有關執行範例應用程式所需 HTTPS 的錯誤,請嘗試設定該變數。