目錄最近在做的統計報表專案包含人員**提交量。
要獲取人員**提交量首先要知道人員參與的專案。gitlab個人頁面中有contributed projects頁面,如下圖:
遺憾的是gitlab api裡沒有相應的api介面。
目前的做法只能通過頁面爬取。做法是使用介面登入,然後訪問該頁面介面,然後解析資料。
gitlab登入頁面是有csrf_token保護的,因此要先從signin頁面抓取authenticity_token。頁面中有多個authenticity_token,不過都是一樣的。
import requests
import lxml
session = requests.session()
res = session.get(signin_url)
html = etree.html(res.text)
token, = html.xpath('//form[@id="new_ldap_user"]//input[@name="authenticity_token"]//@value') or ['']
使用session是為了保持登入狀態,這裡使用lxml解析並獲取token,首先要使用pip install lxml安裝。也可以使用正則或者bs4進行解析。
然後使用authenticity_token及使用者名稱密碼進行登入。
# ldap登入
data =
session.post(login_url, data=data)
我們這裡是使用ldap登入的,使用普通方式登入的也一樣,換下login_url即可。
res = session.get(url)
html = etree.html(res.json()['html'])
_projects = html.xpath('//span[@class="project-full-name"]')
projects = [project.xpath('string(.)').replace('\n', '').replace(' ', '') for project in _projects]
這裡面不是直接請求的使用者貢獻專案頁面,而是加了.json的ajax請求位址。使用xpath的strings()函式獲取當前節點下的所有文字,並替換掉換行、空格。
projects便是解析出的使用者參與專案列表。
import requests
import lxml
gitlab_base_url = 'gitlab服務位址'
def gitlab_login(username, password):
"""登入gitlab返回登入後的session"""
# 從頁面獲取csrf_token
signin_url = 'gitlab_base_url/users/sign_in'
session = requests.session()
res = session.get(signin_url)
html = etree.html(res.text)
token, = html.xpath('//form[@id="new_ldap_user"]//input[@name="authenticity_token"]//@value') or ['']
# ldap登入
login_url = 'gitlab_base_url/users/auth/ldapmain/callback'
data =
session.post(login_url, data=data)
return session
def get_user_contributed(username):
"""從gitlab獲取人員貢獻專案"""
session = gitlab_login('登入使用者名稱', '登入密碼')
url = f'gitlab_base_url/users'
res = session.get(url)
html = etree.html(res.json()['html'])
_projects = html.xpath('//span[@class="project-full-name"]')
projects = [project.xpath('string(.)').replace('\n', '').replace(' ', '') for project in _projects]
print(projects)
return projects
if __name__ == '__main__':
get_user_contributed('gitlab使用者名稱')
5 專案組人員培訓 專案管理系列文章
專案組人員的培訓非常重要,一方面是讓專案組人員的能力提公升,讓組員能夠勝任工作,能夠在專案中發揮自己的作用,另一方面,也是提公升專案組核心競爭力的表現,另一方面,也讓員工的經驗進行提公升,能夠在其它公司也能進行工作,最後,還能在專案最初組建專案組的時候能夠更好的吸引員工。本文就說說專案組人員培訓的方...
6 專案組人員績效考核 專案管理系列文章
上次說了專案組人員溝通交流的事項 專案組人員溝通交流 專案管理系列文章 今天就說說專案管理中的乙個要點 專案組人員績效考核的問題。一般的公司都是這種薪資方式 底薪 績效 工齡 專案提成 年終獎。所以說,績效是薪資中的一部分,也是公司考核員工經驗和能力的乙個方面。下面就從專案管理的方式,對員工績效考核...
4 專案組人員工作安排 專案管理系列文章
以前寫過乙個關於專案人員招聘的文 關於專案組人員招聘 專案管理系列文章 現在,有了人員,就說說專案組人員的工作安排問題。上面是以前的乙個文中的專案組人員示例。以前也寫過乙個關於專案組人員角色指南的問題 軟體專案角色指南 開篇。這次就簡單說說上面專案組人員工作安排的問題。1 專案經理 專案經理主要負責...