Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용하여 GitHub에서 사용자의 별표 상위 10개 저장소를 가져오시겠습니까?

<시간/>

Git은 수백만 명의 개발자가 프로젝트 또는 파일(코드)을 관리하는 가장 인기 있는 버전 제어 시스템입니다. 여기에서 우리는 한 달 안에 가장 많이 별표 표시된 상위 10개 저장소를 가져오려고 노력할 것입니다.

우리는 주로 GitHub 리포지토리를 스크랩하므로 주로 사용할 것입니다.

리포지토리를 가져오기 위한 요청 및 BeautifulSoup 라이브러리입니다.

결과를 파일에 저장하고 표시합니다. 이름 및 저장소와 함께 위치(별)에 따라 결과를 표시합니다.

아래는 그것을 구현하는 코드입니다:

import requests
from bs4 import BeautifulSoup
r = requests.get('https://github.com/trending/lua?since=monthly')
bs = BeautifulSoup(r.text, 'lxml')
lista_repo = bs.find_all('ol', class_='repo-list')
f1 = open('starred-repos.txt', 'w')
for lr in lista_repo:
   aux = lr.find_all('div', class_='d-inline-block col-9 mb-1')
   for ld in aux:
      rank = ld.find_all('a')
      f1.writelines(str(rank))
      f1.writelines('\n')
f1.close()
f1 = open('starred-repos.txt', 'r')
texto = []
for x in f1:
   if x[0] == '[' and x[1] == '<' and x[2] == 'a':
      na = x.split('"')
      texto.append(na[1])
f1.close()
f1 = open('starred-repos.txt', 'w')
f1.writelines('{}\t {}\t\t {}\t\n\n'.format('Position ', 'Name ', 'Repositories '))
for i in range(10):
   tex= texto[i].split('/')
   name = tex[1]
   repos = tex[2]
   f1.writelines('{}- \t {}\t\t {}'.format(i + 1, name, repos))
   f1.writelines('\n')
f1.close()
f1 = open('starred-repos.txt', 'r')
print(f1.read())
f1.close()

출력

Position            Name           Repositories

1-              skywind3000           z.lua
2-                  Kong               kong
3-                 Gawen              WireHub
4-              PapyElGringo      material-awesome
5-                koreader           koreader
6-                stijnwop       guidanceSteering
7-               Courseplay         courseplay
8-                Tencent            LuaPanda
9-                 ntop               ntopng
10-             awesomeWM             awesome