Проблема с веб-очисткой пабли c Github repo - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь очистить паблико c Github repo (https://github.com/stlrda/redb_python/tree/master/python/DAGs), чтобы получить имя и дату и время из каждого файла. Код, который я разместил ниже, будет работать, но не всегда. Иногда я получаю сообщение об ошибке индекса вне диапазона, когда он запускает строку DAGs[counter]['age'] = x.find('.no-wrap')[0].attrs['datetime']. Я очень смущен, почему этот код иногда работает, а в других случаях не удается найти дату и время. Любые идеи о том, как я могу это исправить, чтобы найти дату и время каждого запуска?

session = HTMLSession()
r = session.get('https://github.com/stlrda/redb_python/tree/master/python/DAGs')

div = r.html.find('tbody', first=True)
title = div.find('.content')

DAGs = []

#Grab the names of each DAG in the repo
for x in range((len(title))):

    if x == 0:
        continue
    else:
        info = {"name": title[x].text}
        DAGs.append(info)

#Update the dictionary with the age of the DAG
gitTable = div.find('.js-navigation-item')

counter = 0
for x in gitTable:
    DAGs[counter]['age'] = x.find('.no-wrap')[0].attrs['datetime']
#     print (x.find('.no-wrap')[0].attrs['datetime'])
    counter+=1

Когда код не удается, вот что содержит переменная gitTable:

[<Element 'tr' class=('js-navigation-item',)>,
 <Element 'tr' class=('js-navigation-item',)>,
 <Element 'tr' class=('js-navigation-item',)>,
 <Element 'tr' class=('js-navigation-item',)>]

И html один из этих элементов в списке gitTable:

>>>gitTable[0].html
'<tr class="js-navigation-item">\n<td class="icon">\n<svg aria-label="file" class="octicon octicon-file" height="16" role="img" version="1.1" viewbox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z" fill-rule="evenodd"/></svg>\n<img alt="" class="spinner" height="16" src="https://github.githubassets.com/images/spinners/octocat-spinner-32.gif" width="16"/>\n</td>\n<td class="content">\n<span class="css-truncate css-truncate-target"><a class="js-navigation-open" href="/stlrda/redb_python/blob/master/python/DAGs/MigratetoPG_DAG.py" id="5554cd417ad3b8097206c9a0e81566d0-7416c3966dc565eb1b0115b89fa72116e4cc3ee6" title="MigratetoPG_DAG.py">MigratetoPG_DAG.py</a></span>\n</td>\n<td class="message">\n<span class="css-truncate css-truncate-target">\n</span>\n</td>\n<td class="age">\n<span class="css-truncate css-truncate-target"/>\n</td>\n</tr>'

1 Ответ

0 голосов
/ 13 января 2020

Похоже, я шел по более сложному пути, пытаясь очистить GitHub, и полностью упустил из виду их API.

Конечные точки коммитов и содержимого смогли предоставить мне необходимую информацию об имени файла и дате и времени. Ниже приведены примеры конечных точек.

Я не смог найти ни одной конечной точки, которая бы указала и имя файла, и данные даты и времени, поэтому, если кто-то знает одну из них, сообщите мне.

Datetime - -> https://api.github.com/repos/ учетная запись github / имя репо / commits? Path = путь к папке

Имя - -> https://api.github.com/repos/ учетная запись github / имя репо / contents / путь к папке

...