Ошибка в цикле обработки страниц в парсере сайта - Python

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, при написании парсера (код ниже) застрял на ошибке - цикл обработки страниц обрабатывает только одну страницу и выводит информацию столько раз, сколько получено страниц при пагинге вместо того чтобы обработать все страницы. Застрял…подскажите пожалуйста где я ошибся:
Листинг программы
  1. import urllib.request
  2. from bs4 import BeautifulSoup
  3. BASE_URL = "https://bank.gov.ua/control/uk/publish/category?cat_id=55838&page=1"
  4. def get_html(url):
  5. response = urllib.request.urlopen(url)
  6. return response.read()
  7. #создаем счетчик страниц:
  8. def get_page_count(html):
  9. soup = BeautifulSoup(html,'lxml')
  10. last_link = soup.find('td', class_='nav').find_all('a')[-1:]
  11. for href in last_link:
  12. paggination = href.get('href').split('=')
  13. return int(paggination[-1])
  14. def parse(html):
  15. soup = BeautifulSoup(html,'lxml')
  16. table = soup.find('div',class_='announces_block')
  17. projects = []
  18. for row in table.find_all('tr')[2:]:
  19. cols = row.find_all('td')
  20. projects.append({
  21. 'Date': cols[0].div.get_text().strip(),
  22. 'Announces': cols[0].a.get_text().strip(),
  23. })
  24. for project in projects:
  25. return projects
  26. def main():
  27. page_count = get_page_count(get_html(BASE_URL))
  28. print('всего найдено страниц %d'% page_count)
  29. projects = []
  30. #обрабатываем каждую страницу
  31. for page in range (1, page_count):
  32. print ('Парсинг %d%%'%(page/page_count*100))
  33. projects.extend(parse(get_html(BASE_URL + '?page=%d' % page)))
  34. for project in projects:
  35. print(project)
  36. if __name__=='__main__':
  37. main()

Решение задачи: «Ошибка в цикле обработки страниц в парсере сайта»

textual
Листинг программы
  1. projects.extend(parse(get_html(BASE_URL + '&page=%d' % page)))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут