Парсер на Python не выдает нужное кол-во информации
Парсер должен вытягивать 100 вакансий со страницы, а вытягивает 20. Почему именно 20 не пойму. В программе фигурирует число 20 как кол-во страниц на сайте, почему оно попадает в циклы я не знаю.
from bs4 import BeautifulSoup
URL = 'https://hh.ru/search/vacancy?no_magic=true&L_save_area=true&text=Python&excluded_text=учитель&salary=¤cy_code=RUR&education=not_required_or_not_specified&education=special_secondary&experience=doesNotMatter&order_by=relevance&search_period=0&items_on_page=100'
headers = {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"
}
def hh_request(url, retry = 5):
try:
response = requests.get(url=url, headers=headers)
print(f"[+] {url} {response.status_code}")
except Exception as ex:
if retry:
print(f'[INFO] retry={retry} => {url}')
return hh_request(url, retry=(retry-1))
else:
raise
else:
return response
def extract_max_page(request):
hh_soup = BeautifulSoup(request.text, 'lxml')
print(f'{hh_soup.title.text}\n')
paginator = hh_soup.find_all('span', {'class':'pager-item-not-in-short-range'})
pages = []
for page in paginator:
pages.append(int(page.find('a').text))
max_page = (pages[-1])
return max_page
def vacancy_extractor(max_page):
vacancy_title = []
for page in range(max_page):
response = hh_request(f'{URL}&page={page}')
soup = BeautifulSoup(response.text, 'lxml')
results = soup.find_all('a', {'class': 'serp-item__title'})
for result in results:
vacancy_title.append(result.text)
return vacancy_title
def main():
request = hh_request(URL)
max_page = extract_max_page(request)
print(max_page)
vacancy_title = vacancy_extractor(max_page)
print(vacancy_title)
print(len(vacancy_title))
if __name__ == "__main__":
main()```