GitLab獲取人員參與專案 貢獻專案列表

2022-04-07 20:08:18 字數 2459 閱讀 4607

目錄最近在做的統計報表專案包含人員**提交量。

要獲取人員**提交量首先要知道人員參與的專案。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 專案經理 專案經理主要負責...