如何在page_id
给定一个page_url
. 例如:
如果这是显示 URL:https ://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page
我想page_id
使用 Confluence REST API来获取它
更多细节在这里
如何在page_id
给定一个page_url
. 例如:
如果这是显示 URL:https ://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page
我想page_id
使用 Confluence REST API来获取它
更多细节在这里
你使用atlassian-python-api吗?
在这种情况下,您可以解析您的 url 以获取汇合空间 ( SC
) 和页面标题 ( Finding the Page ID of a Confluence Page
),然后使用confluence.get_page_id(space, title)
.
from atlassian import Confluence
page_url = "https://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page"
confluence = Confluence(
url='https://confluence.som.yale.edu/',
username=user,
password=pwd)
space, title = page_url.split("/")[-2:]
title = title.replace("+", " ")
page_id = confluence.get_page_id(space, title)
请注意,当您的标题包含特殊字符(+
或ü
,ä
...)时,您的页面 url 将已经包含这样的 id:https://confluence.som.yale.edu/pages/viewpage.action?pageId=1234567890
因此您可能需要先检查它。
编辑:这里是你的函数的一个版本:
from atlassian import Confluence
import re
import urllib
# regex pattern to match pageId if already in url
page_id_in_url_pattern = re.compile(r"\?pageId=(\d+)")
def get_page_id_from_url(confluence, url):
page_url = urllib.parse.unquote(url) #unquoting url to deal with special characters like '%'
space, title = page_url.split("/")[-2:]
if re.search(page_id_in_url_pattern, title):
return re.search(page_id_in_url_pattern, title).group(1)
else:
title = title.replace("+", " ")
return confluence.get_page_id(space, title)
if __name__ == "__main__":
from getpass import getpass
user = input('Login: ')
pwd = getpass('Password: ')
page_url = "https://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page"
confluence = Confluence(
url='https://confluence.som.yale.edu/',
username=user,
password=pwd)
print(get_page_id_from_url(confluence, page_url))