如何用Python提取SharePoint Wiki的ASPX页面内容?
原因分析
直接通过ListItem或File对象获取的Content属性返回的是ASPX页面的原始源码,包含asp:content这类服务器端控件标记,而非你编写的自定义文本内容。
解决方案
方法1:提取Wiki专属字段内容
SharePoint Wiki页面的自定义内容存储在WikiField字段中,可通过指定字段名精准获取:
from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.user_credential import UserCredential # 配置参数 site_url = "https://domain.sharepoint.com/sites/SiteName" username = "你的账号" password = "你的密码" page_server_relative_url = "/sites/SiteName/SitePages/name.aspx" # 初始化客户端上下文 ctx = ClientContext(site_url).with_credentials(UserCredential(username, password)) # 获取页面关联的ListItem并加载指定字段 file = ctx.web.get_file_by_server_relative_url(page_server_relative_url) list_item = file.listItemAllFields ctx.load(list_item, ["WikiField"]) ctx.execute_query() # 提取自定义文本 custom_content = list_item.properties.get("WikiField") print(custom_content)
方法2:获取页面渲染后的HTML内容
如果需要页面实际展示的HTML内容,可调用二进制流方法获取:
# 复用上述已初始化的ctx对象 file = ctx.web.get_file_by_server_relative_url(page_server_relative_url) binary_stream = file.open_binary_stream() ctx.execute_query() # 解码并输出HTML内容 html_content = binary_stream.read().decode("utf-8") print(html_content)
额外提示
- 确保账号拥有该Wiki页面的读取权限
- 现代SharePoint站点的部分页面可能使用
CanvasContent1字段存储内容,可尝试替换WikiField为该字段名 - 若用户凭据认证受限,可改用应用权限(
ClientCredential)完成认证
内容的提问来源于stack exchange,提问作者priyansh agrawal
相关产品推荐
相关产品推荐

