Хорошо, похоже, когда вы просматриваете страницу на вкладках сети в chrome инструментах разработчика, вы видите, что проекты не отображаются при выполнении запроса:
Это означает, что информация о проекте запрашивается после. Чтобы получить проекты, вам необходимо отправить запрос на конечную точку https://gitlab.com/users/USER/projects.json
:
После этого вы можете проверить ответ с этой конечной точки. Как вы можете видеть, ответ здесь json, поэтому мы можем загрузить json данные с модулем json
, а затем в этом словаре есть запись с именем html
, в которой есть данные html, поэтому мы можем проанализировать это с BeautifulSoup и остальной код остается прежним:
import bs4 as bs
import urllib, json
url = 'https://gitlab.com/users/USER/projects.json'
source = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(json.loads(source)["html"],'html.parser')
repos = [repo.text for repo in soup.find_all('span',{'class':'project-name'})]
print(repos)
Вывод:
['freebsd', 'freebsd-ports', 'freebsd-test', 'risc-vhdl', 'dotfiles', 'tideyBot']