es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python – cómo obtener acceso a un sitio de SharePoint sin acceso a la raíz del sitio.

Estoy tratando de leer datos de una tabla HTML que se encuentra en un sitio con una URL como https://mysharepoint.sharepoint.com/sites/mySite/sitepages/tables.

Y solo tengo acceso al sitio “mySite”. He intentado usar shareplum siguiendo su documentación:

from shareplum import Site
from shareplum import Office365

authcookie = Office365('https://abc.sharepoint.com', username='username@abc.com', password='password').GetCookies()
site = Site('https://abc.sharepoint.com/sites/MySharePointSite/', authcookie=authcookie)

Pero luego obtengo el siguiente error: “requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://abc.sharepoint.com/sites/MySharePointSite/vtibin/lists.asmx”

Supongo que esto es precisamente porque no tengo acceso al sitio raíz, pero también he intentado hacer:

authcookie = Office365('https://abc.sharepoint.com/sites/MySharePointSite/', username='username@abc.com', password='password').GetCookies()
site = Site('https://abc.sharepoint.com/sites/MySharePointSite/', authcookie=authcookie)

Pero eso generó el mismo error.

¿Alguien sabe alguna forma de especificarle a shareplum que quiero usar mis credenciales para ese sitio específico, o alguna forma de hacerlo sin usar shareplum en absoluto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error es causado por permisos insuficientes para acceder al sitio de SharePoint. Si solo tienes acceso al sitio “mySite”, no podrás acceder a las listas o bibliotecas en el sitio raíz.

    Para especificar tus credenciales para un sitio específico en shareplum, puedes modificar el código de la siguiente manera:

    from shareplum import Site
    from shareplum import Office365
    
    # Especifica la URL del sitio al que tienes acceso
    site_url = "https://mi sharepoint.sharepoint.com/sites/mySite"
    
    # Autentícate usando Office365 y obtén las cookies
    authcookie = Office365(site_url, username='username@abc.com', password='password').GetCookies()
    
    # Conéctate al sitio usando la authcookie y la URL del sitio
    site = Site(site_url, authcookie=authcookie)
    

    Esto te permitirá acceder a las listas y bibliotecas en el sitio “mySite”.

    Alternativamente, si deseas acceder a los datos de la tabla HTML sin usar shareplum en su totalidad, puedes usar la biblioteca requests en Python para enviar una solicitud GET a la página y analizar la respuesta HTML para extraer los datos de la tabla. Aquí tienes un ejemplo:

    import requests
    from bs4 import BeautifulSoup
    
    # Especifica la URL de la página con la tabla
    url = "https://mi sharepoint.sharepoint.com/sites/mySite/sitepages/tables"
    
    # Envía una solicitud GET a la página
    response = requests.get(url, auth=('username@abc.com', 'password'))
    
    # Analiza la respuesta HTML usando BeautifulSoup
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # Encuentra el elemento de la tabla y extrae los datos
    table = soup.find('table')
    rows = table.find_all('tr')
    
    for row in rows:
        cells = row.find_all('td')
        data = [cell.text.strip() for cell in cells]
        print(data)
    

    Ten en cuenta que este método requiere que proporciones tus credenciales en la función requests.get(), así que asegúrate de manejarlas de forma segura.

Comments are closed.