Guía de inicio rápido: Ejecuta una app de Search Console en Python
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Esta aplicación web de ejemplo imprime la lista de sitios a los que puedes acceder y los mapas del sitio,
si los hubiera, para cada uno de esos sitios.
Requisitos
Para ejecutar este programa, necesitarás lo siguiente:
- Acceso a Internet y a un navegador web para autorizar la app de ejemplo
- Una Cuenta de Google con, al menos, un sitio web verificado en Google Search Console
- Python 3 y el framework de aplicación web flask.
Instrucciones
Para esta muestra, deberás adaptar la muestra de OAuth 2.0 para aplicaciones de servidor web
de la aplicación.
Esta app de Python de muestra usa el framework de aplicación web flask para ejecutar un
aplicación basada en la Web que administra claves de OAuth y llama a una API de Google Cloud. Tú
adaptará la muestra vinculada para llamar a la API de Search Console e imprimirá la
genera una página web.
Sigue las instrucciones de configuración en la página de muestra de OAuth vinculada anteriormente y copia el
código de muestra y, luego, modifica el código como se muestra a continuación. En concreto, sigue la
instrucciones de configuración para tu entorno de programación, configuración (o reutilización) de un proyecto.
que pueda acceder a la API de Search Console en la consola de Google Cloud y que generen credenciales
para una aplicación web.
Usarás el ejemplo de código completo para lo siguiente:
Python como código fuente para esta muestra.
Consulte la sección Modificaciones que aparece a continuación para ver qué cambios debe hacer en las cuentas vinculadas
instrucciones.
Si necesitas acceder al cliente de Python de la API de Google desde Google App Engine
proyecto, deberás usar una cuenta de servicio
para administrar tus permisos.
Modificaciones
Cuando sigas las instrucciones en la página de muestra de OAuth2 vinculada, realiza las
siguientes cambios:
- Habilita la API de Google Search Console en lugar de la API de Drive.
Copia la solicitud de ejemplo que se encuentra al final del documento OAUth vinculado anteriormente.
y reemplazarlo
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
API_SERVICE_NAME = 'drive'
API_VERSION = 'v2'
Con esto:
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
API_SERVICE_NAME = 'searchconsole'
API_VERSION = 'v1'
Reemplaza el cuerpo del lenguaje Python
test_api_request()
con el siguiente código:
@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
En nuestras pruebas, tuvimos que configurar manualmente OAUTHLIB_INSECURE_TRANSPORT
a 1 en el entorno Bash: export OAUTHLIB_INSECURE_TRANSPORT=1
.
Si recibes errores sobre HTTPS que se requiere para ejecutar la app de ejemplo, intenta configurarlo
de salida.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-08-29 (UTC)
[null,null,["Última actualización: 2025-08-29 (UTC)"],[[["\u003cp\u003eThis web application displays a list of your verified websites in Google Search Console and their corresponding sitemaps.\u003c/p\u003e\n"],["\u003cp\u003eTo run the application, you need internet access, a Google account with a verified website in Search Console, and Python 3 with the Flask framework installed.\u003c/p\u003e\n"],["\u003cp\u003eThe application utilizes the OAuth 2.0 protocol for authorization and the Google Search Console API to retrieve website and sitemap data.\u003c/p\u003e\n"],["\u003cp\u003eYou will need to modify a provided OAuth 2.0 sample application by enabling the Search Console API and adjusting scopes, service name, and API version.\u003c/p\u003e\n"],["\u003cp\u003eThe application code is modified to retrieve and display verified site URLs and associated sitemap information in a tabular format within a web page.\u003c/p\u003e\n"]]],["This Python web app uses Flask and the Google Search Console API to display a list of verified websites associated with a Google account. It requires internet access, a verified website in Google Search Console, and specific Python libraries. The app utilizes OAuth 2.0 for authorization, and the core action is adapting the linked OAuth sample code to call the Search Console API. The modified code retrieves and displays verified site URLs and their associated sitemaps in a web page table, by listing site and then the sitemaps list.\n"],null,["# Quickstart: Run a Search Console App in Python\n\nThis sample web app prints the list of sites that you can access, and the sitemaps,\nif any, for each of those sites.\n\nRequirements\n------------\n\nTo run this program, you'll need:\n\n- Access to the internet and a web browser, in order to authorize the sample app.\n- A Google account with at least one website [verified](https://support.google.com/webmasters/answer/9008080) in Google Search Console.\n- Python 3 and the [flask](https://github.com/pallets/flask) web application framework.\n\nInstructions\n------------\n\nFor this sample, you'll adapt the [OAuth 2.0 for Web Server Applications sample\napplication](https://developers.google.com/identity/protocols/oauth2/web-server#python).\nThis sample python app uses the flask web application framework to run a\nweb-based application that manages OAuth keys and calls a Google Cloud API. You\nwill adapt the linked sample to call the Search Console API and print out the\nresults in a web page.\n\nFollow the setup instructions on the OAuth sample page linked above, and copy the\nsample code, then modify the code as shown below. Specifically, follow the\nsetup instructions for your coding environment, setting up (or reusing) a project\nthat can access the Search Console API in the Google Cloud console, and generating credentials\nfor a web application.\n\nYou will use the [Complete code example](https://developers.google.com/identity/protocols/oauth2/web-server#example) **for\nPython** as the source code for this sample.\n\nRead *Modifications* below to see what changes you need to make to the linked\ninstructions.\n\nIf you need to access the Google API Python Client from a Google App Engine\nproject, you'll need to use a [service account](https://developers.google.com/identity/protocols/oauth2/service-account)\nto manage your permissions.\n\nModifications\n-------------\n\nWhen following the instructions on the linked Oauth2 sample page, make the\nfollowing changes:\n\n1. Enable the Google Search Console API rather than the Drive API.\n2. Copy the sample application at the end of the OAUth document linked above,\n and replace this\n\n ```\n SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']\n API_SERVICE_NAME = 'drive'\n API_VERSION = 'v2'\n ```\n With this: \n\n ```\n SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']\n API_SERVICE_NAME = 'searchconsole'\n API_VERSION = 'v1'\n ```\n\n \u003cbr /\u003e\n\n3. Replace the body of the Python language\n [`test_api_request()`](https://developers.google.com/identity/protocols/oauth2/web-server#example)\n function with the following code:\n\n ```python\n @app.route('/test')\n def test_api_request():\n if 'credentials' not in flask.session:\n return flask.redirect('authorize')\n\n # Load credentials from the session.\n credentials = google.oauth2.credentials.Credentials(\n **flask.session['credentials'])\n\n # Retrieve list of properties in account\n search_console_service = googleapiclient.discovery.build(\n API_SERVICE_NAME, API_VERSION, credentials=credentials)\n site_list = search_console_service.sites().list().execute()\n\n # Filter for verified URL-prefix websites.\n verified_sites_urls = [s['siteUrl'] for s in site_list['siteEntry']\n if s['permissionLevel'] != 'siteUnverifiedUser'\n and s['siteUrl'].startswith('http')]\n\n # Print the sitemaps for all websites that you can access.\n results = '\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003cbody\u003e\u003ctable\u003e\u003ctr\u003e\u003cth\u003eVerified site\u003c/th\u003e\u003cth\u003eSitemaps\u003c/th\u003e\u003c/tr\u003e'\n for site_url in verified_sites_urls:\n\n # Retrieve list of sitemaps submitted\n sitemaps = search_console_service.sitemaps().list(siteUrl=site_url).execute()\n results += '\u003ctr\u003e\u003ctd\u003e%s\u003c/td\u003e' % (site_url)\n\n # Add a row with the site and the list of sitemaps\n if 'sitemap' in sitemaps:\n sitemap_list = \"\u003cbr /\u003e\".join([s['path'] for s in sitemaps['sitemap']])\n else:\n sitemap_list = \"\u003ci\u003eNone\u003c/i\u003e\"\n results += '\u003ctd\u003e%s\u003c/td\u003e\u003c/tr\u003e' % (sitemap_list)\n\n results += '\u003c/table\u003e\u003c/body\u003e\u003c/html\u003e'\n\n # Save credentials back to session in case access token was refreshed.\n # ACTION ITEM: In a production app, you likely want to save these\n # credentials in a persistent database instead.\n flask.session['credentials'] = credentials_to_dict(credentials)\n\n return results\n ```\n\n \u003cbr /\u003e\n\n4. In our testing, we needed to manually set OAUTHLIB_INSECURE_TRANSPORT\n to 1 in the Bash environment: `export OAUTHLIB_INSECURE_TRANSPORT=1`.\n If you get errors about HTTPS required to run the sample app, try setting that\n variable."]]