Задать вопрос
@Ang_11_22_07

Всем привет, решила попробовать парсинг сайта hh.ru, но в консоли выходит ответ "200". Что с этим делать?

Был написан код, с помощью которого я хотела получить названия вакансий, компаний и их месторасположения, но в консоли выводится ответ "200", UserAgent использовала, чтобы как-то обойти проблему, но не помогло.....Буду благодарна, если кто-нибудь поможет)

Код на первый файл:

from headhunter import extract_max_page, extract_hh_jobs
hh_max_page = extract_max_page()
hh_jobs = extract_hh_jobs(hh_max_page)
print(hh_jobs)


Код на второй файл:

import requests
from bs4 import BeautifulSoup
ITEMS = 100
URL = f'https://hh.ru/search/vacancy?text=python&items_on_page={ITEMS}'
headers = {
  'Host': 'hh.ru',
  'User-Agent': 'Safari',
  'Accept': '*/*',
  'Accept-Encoding':'gzip, deflate, br',
  'Connection': 'keep-alive'
}
def extract_max_page():
  hh_request=requests.get(URL, headers=headers)
  hh_soup = BeautifulSoup (hh_request.text,'html.parser')
  pages = []
  paginator = hh_soup.find_all("span", {'class':'pager-item-not-in-short-range'}) 
  for page in paginator:
    pages.append(int(page.find('a').text))
  return pages[-1]
def extract_job(html):
  title=html.find('a').text
  link =html.find('a')['href']
  company = html.find('div', {'class': 'vacancy-serp-item__meta-info-company'}).text
  company = company.strip()
  location = html.find('span', {'data-qa':'vacancy-serp__vacancy-address'}).text
  location = location.partition(',')[0]
  return {'title':title, 'company': company, 'location': location, 'link':link}
def extract_hh_jobs(last_page):
  jobs = []
  for page in range (last_page):
    print(f'Парсинг страницы {page}')
    result = requests.get(f'{URL}&page={page}', headers=headers)
    print(result.status_code)
    soup = BeautifulSoup (result.text,'html.parser')
    results = soup.find_all('div', {'class':'serp-item__title'})
    for result in results:
      jobs.append(extract_job(result))
    
  return jobs
  • Вопрос задан
  • 574 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
кажется гораздо проще использовать API .
welcome page
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы