Получение данных до тех пор, пока на сайте есть кнопка - PullRequest
0 голосов
/ 03 мая 2020

Я хочу получать коммиты со страницы 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, что слишком много запросов , Похоже, запрос отправляется только на вторую страницу и не находит другой кнопки для перенаправления на другую страницу. Может кто-нибудь помочь мне с поиском решения или сказать, какая часть здесь не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...