Получить список SharePoint с помощью Python

Я пытаюсь найти любой способ получить список SharePoint в Python. Мне удалось подключиться к SharePoint и получить данные XML с помощью Rest API с помощью этого видео: https://www.youtube.com/watch?v=dvFbVPDQYyk ... но не знаю, как получить данные списка в python. Конечная цель - ежедневно получать данные SharePoint и импортировать их в SSMS.

Вот что у меня есть на данный момент ..

import requests
from requests_ntlm import HttpNtlmAuth
url='URL would go here'
username='username would go here'
password='password would go here'
r=requests.get(url, auth=HttpNtlmAuth(username,password),verify=False)

Я считаю, что это будут следующие шаги. Мне действительно нужна только помощь в получении данных из SharePoint, желательно в формате Excel / CSV, и оттуда все будет в порядке. Но любые рекомендации были бы полезны ..

#PARSE XML VIA REST API
#PRINT INTO DATAFRAME AND CONVERT INTO CSV
#IMPORT INTO SQL SERVER
#EMAIL RESULTS

person John    schedule 20.03.2017    source источник


Ответы (4)


Я знаю, что это не дает прямого ответа на ваш вопрос (и, вероятно, у вас уже есть ответ), но я бы дал Попробуйте библиотеку SharePlum. Надеюсь, это должно упростить ваш процесс взаимодействия с SharePoint.

Кроме того, я не уверен, есть ли у вас требование экспортировать данные в CSV, но вы можете подключиться напрямую к SQL Server и вставьте свои данные более прямо.

Я бы просто добавил это в комментарии, но пока не имею достаточно высокой репутации.

person Dr. Mantis Tobbogan    schedule 21.03.2019

это можно сделать с помощью SharePlum и Pandas. Ниже приведен рабочий фрагмент кода.

import pandas as pd     # importing pandas to write SharePoint list in excel or csv
from shareplum import Site 
from requests_ntlm import HttpNtlmAuth

cred = HttpNtlmAuth(#userid_here, #password_here)
site = Site('#sharePoint_url_here', auth=cred)

sp_list = site.List('#SharePoint_list name here') # this creates SharePlum object
data = sp_list.GetListItems('All Items') # this will retrieve all items from list

# this creates pandas data frame you can perform any operation you like do within 
# pandas capabilities     

data_df = pd.DataFrame(data[0:])
data_df.to_excel("data.xlsx")

пожалуйста, оцените, помогает ли это. Заранее спасибо!

person Abhishek Pratap Singh    schedule 27.01.2020
comment
как получить историю версий списка с помощью python? - person Andrew; 02.07.2020
comment
Я получаю сертификат для проверки, не удалось: невозможно получить сертификат местного эмитента :( пожалуйста, помогите, sharepoint2013 - это то место, где мне нужно подключиться - person shzyincu; 08.07.2021

Я могу помочь с большинством из этих проблем

import requests
import xml.etree.ElementTree as ET
import csv

from requests_ntlm import HttpNtlmAuth

response = requests.get("your_url", auth=HttpNtlmAuth('xxxx\\username','password'))
tree =  ET.ElementTree(ET.fromstring(response.content))
tree.write('file_name_xml.xml')
root = tree.getroot()

#Create csv file 
csv_file = open('file_name_csv.csv', 'w', newline = '', encoding='ansi')
csvwriter = csv.writer(csv_file)

col_names = ['Col_1', 'Col_2', 'Col_3', 'Col_n']
csvwriter.writerow(col_names)

field_tag = ['dado_1', 'dado_2', 'dado_3', 'dado_n']

#schema XML microsoft 
ns0 = "http://www.w3.org/2005/Atom"
ns1 = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
ns2 = "http://schemas.microsoft.com/ado/2007/08/dataservices"


for member in root:
    if member.tag == '{' + ns0 + '}entry':
        for element in member:
            if element.tag == '{' + ns0 + '}content':
                data_line = []

                for field in element[0]:            
                    for count in range(0, len(field_tag)):
                        if field.tag == '{' + ns2 + '}' + field_tag[count]:
                            data_line.append(field.text)


                csvwriter.writerow(data_line)

csv_file.close()
person Morgana Sartor    schedule 23.01.2020
comment
Привет, Моргана. Есть ли способ извлечь имена столбцов и теги полей из данных XML? Таблица, из которой я беру, было бы немного утомительно писать в список вручную. Возможно, вы также могли бы уточнить, что такое field_tags? Любые подробности, добавленные к вашей логике, будут полезны. - person Hofbr; 07.10.2020

person    schedule
comment
Вот несколько рекомендаций для Как написать хороший ответ?. Этот предоставленный ответ может быть правильным, но для него может быть полезно объяснение. Ответы только на код не считаются хорошими ответами. Из обзора. - person Trenton McKinney; 19.09.2019
comment
что означает ххх \\ ??? - person shzyincu; 08.07.2021
comment
@shzyincu домен мой друг (я использовал корпоративную сеть) - person David Castro; 09.07.2021
comment
@TrentonMcKinney, спасибо, в будущем я подумаю, чтобы добавить хотя бы описание или заголовок. - person David Castro; 09.07.2021