Я хочу получать коммиты со страницы github. У меня нет проблем с получением их с 1 страницы, но в проекте может быть много страниц с 35 коммитами на страницу. Чтобы решить эту проблему, я хочу проверить, есть ли кнопка на текущей странице - если она есть, получите атрибут href
, сделайте еще один запрос к новому URL и повторите это, пока на странице есть кнопка. К сожалению, я застрял и не знаю, как решить эту проблему.
import urllib.request
import bs4 as bs
url = 'https://github.com/USER/PROJECT/commits/master'
source = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(source, 'lxml')
first_page = [author.text for author in soup
.find_all('a', class_="commit-author")]
Это решение работает для первой страницы. Поэтому, если есть еще одна, я просто проверяю, есть ли кнопка на странице, и получаю href
:
while(soup.find('a',class_='btn btn-outline BtnGroup-item')):
print('INSIDE WHILE')
btn = soup.find('a',class_='btn btn-outline BtnGroup-item')
next_page = btn['href']
another_source = urllib.request.urlopen(next_page).read()
soup = bs.BeautifulSoup(another_source,'lxml')
second_author = [a.text for a in soup.find_all('a',class_='commit-author')]
К сожалению, это решение не работает - я получаю сообщение об ошибке 429, что слишком много запросов , Похоже, запрос отправляется только на вторую страницу и не находит другой кнопки для перенаправления на другую страницу. Может кто-нибудь помочь мне с поиском решения или сказать, какая часть здесь не так?