首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自公司sharepoint的Python from抓取

来自公司sharepoint的Python from抓取
EN

Stack Overflow用户
提问于 2021-08-30 13:35:41
回答 1查看 436关注 0票数 0

我需要使用Python从我公司的Sharepoint站点抓取数据,但我被困在身份验证阶段。我尝试过使用requests_ntlmHttpNtlmAuthrequests_negotiate_sspiHttpNegotiateAuthmechanize,但都不起作用。我是网络刮擦的新手,我已经被这个问题困了好几天了。我只需要获得HTML源代码,这样我就可以开始过滤我需要的数据。请任何人在这个问题上给我一些指导。

我尝试过的方法:

代码语言:javascript
运行
复制
import requests
from requests_negotiate_sspi import HttpNegotiateAuth

# this is the security certificate I downloaded using chrome
cert = 'certsharepoint.cer'

response = requests.get(
    r'https://company.sharepoint.com/xxx/xxx/xxx/xxx/xxx.aspx',
    auth=HttpNegotiateAuth(),
    verify=cert)

print(response.status_code)

错误:

代码语言:javascript
运行
复制
[X509: NO_CERTIFICATE_OR_CRL_FOUND] no certificate or crl found (_ssl.c:4293)

另一种方法:

代码语言:javascript
运行
复制
import sharepy
s = sharepy.connect("https://company.sharepoint.com/xxx/xxx/xxx/xxx/xxx.aspx",
username="username",
password="password")

错误:

代码语言:javascript
运行
复制
Invalid Request: AADSTS90023: Invalid STS request

第一种方法中的证书似乎有问题,研究无效的STS请求没有提出任何对我有效的解决方案。

另一种方法:

代码语言:javascript
运行
复制
import requests
from requests_ntlm import HttpNtlmAuth

r = requests.get("http://ntlm_protected_site.com",auth=HttpNtlmAuth('domain\\username','password'))

错误:

代码语言:javascript
运行
复制
403 FORBIDDEN

将requests.get与头部一起使用,如下所示:

代码语言:javascript
运行
复制
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) ' 
                      'AppleWebKit/537.11 (KHTML, like Gecko) '
                      'Chrome/23.0.1271.64 Safari/537.11',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
        'Accept-Encoding': 'none',
        'Accept-Language': 'en-US,en;q=0.8',
        'Connection': 'keep-alive'}
 
auth = HttpNtlmAuth(username = username,
                     password = password)

responseObject = requests.get(url, auth = auth, headers=headers)

返回200响应,而使用不带标头的requests.get将返回403禁止响应。但是,返回的HTML没有任何用处,因为它是此页面的HTML:

此外,从requests.get responseObject = requests.get(url, headers=headers)中删除auth参数不会改变任何事情,因为它仍然返回一个200响应,其中包含“我们无法登录”页面的相同HTML。

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 12:42:36

我通过使用https://pypi.org/project/sharepy/2.0.0b1.post2/而不是https://pypi.org/project/sharepy/连接到了我公司的sharepoint

使用当前版本的sharepy (1.3.0)和以下代码:

代码语言:javascript
运行
复制
s = sharepy.connect("https://company.sharepoint.com",
username=username,  
password=password)

responseObject =  (s.get("https://company.sharepoint.com/teams/xxx/xxx/xxx.aspx"))

我得到了这个错误:

代码语言:javascript
运行
复制
Authentication Failure: AADSTS50126: Error validating credentials due to invalid username or password

但是使用带有相同代码的sharepy 2.0.0b1.post2不会返回任何错误,并且成功地向sharepoint验证了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68985077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档