Есть скрипт парсера. Надо к этому скрипту присобачить прогресс бар. Пользуюсь библиотекой tqdm.
Перешерстил интернет. Есть примеры на английском, но не нашел интеграции с функцией.
Код функции:
def hh_parse(base_url, headers):
session = requests.session()
request = session.get(base_url, headers=headers)
if request.status_code == 200:
soup = bs(request.content, 'html.parser')
divs = soup.find_all('div', attrs={'data-qa': 'vacancy-serp__vacancy'})
output_file = open(out, 'w')
for div in divs:
title = div.find('a', attrs={'data-qa': 'vacancy-serp__vacancy-title'}).text
compensation = div.find('div', attrs={'data-qa': 'vacancy-serp__vacancy-compensation'})
if compensation == None:
compensation = 'Не указанно'
else:
compensation = div.find('div', attrs={'data-qa': 'vacancy-serp__vacancy-compensation'}).text
href = div.find('a', attrs={'data-qa': 'vacancy-serp__vacancy-title'})['href']
company = div.find('a', attrs={'data-qa': 'vacancy-serp__vacancy-employer'}).text
text1 = div.find('div', attrs={'data-qa': 'vacancy-serp__vacancy_snippet_responsibility'}).text
text2 = div.find('div', attrs={'data-qa': 'vacancy-serp__vacancy_snippet_requirement'}).text
content = 'Условия:\n' + text1 + '\nТребования к кандидату:\n' + text2
all = title + '\n' + compensation + '\n' + href + '\n' + company + '\n' + content + '\n\n\n\n\n'
output_file.write(all)
print(all)
output_file.close()
else:
print('ERROR')
Заранее огромное спасибо за помощь!
P.S.: нашел код прогресс бара, но не уверен в его правильности:def update_progress(progress):
barLength = 10 # Modify this to change the length of the progress bar
status = ""
if isinstance(progress, int):
progress = float(progress)
if not isinstance(progress, float):
progress = 0
status = "error: progress var must be float\r\n"
if progress < 0:
progress = 0
status = "Halt...\r\n"
if progress >= 1:
progress = 1
status = "Done...\r\n"
block = int(round(barLength * progress))
text = "\rPercent: [{0}] {1}% {2}".format("#" * block + "-" * (barLength - block), progress * 100, status)
sys.stdout.write(text)
sys.stdout.flush()