Pull to refresh

Comments 16

Много картинок, мало текста, при этом масса опечаток. Довольно шизофренично.
Что Вы точно имеете ввиду в «Довольно шизофренично»?
Я новый автор и я решил писать не очень серезно. Уточните где в тексту «шизофрения»? Мне очень интересно.
(красный цвет добавил в GIMP, уже рассказывал кем считает меня бабушка?
)

навскидку
мои мелкие заметки обычно выходят в +
так что попробую дать пару советов от продолжающего начинающему
1) больше пояснений кода, я не знаком с питоном и не очень понятно почему это выглядит так
2) не выкладывайте код скринами, это неудобно и не нужно
Cosole.WriteLine("Так лучше")

3) не выкладывате ссылки как юрлы, лучше вот так
4) приложите вконце ссылку на полный репозиторий гита, так куда удобнее будет пользоваться
5) откажитесь от м*терных заголовков, если не деляете что-то очень яркое, обычно ожидания рушатся, если подкат не соответсвует столь дерзкому кату
Спасибо за фидбек, постараюсь исправить ошибки.
Спасибо за ссылку. Не перестану.
В общем не был уверен ли моя манера изложения понравиться остальным. Хотел это проверить. Более того русский это не мой родной язык и много фраз казалось мне грамотными. В итоге я читал комментарии и на их основе поменял форму стации на более адекватную. Удачи Вам!

Да ещё и зарплату считают только по средам ("средную")...

«дата-саентолога» — вы знаете что это стёб?

Репрезентативность выборки не доказана. Почему не берете в учет вакансии из банковского сектора, например, где даже для джунов зарплата с учетом премий доходит до 200к? Может, потому что их нет на hh? Тогда с чего "парсинг Хедхантера это самый надежный и легкий способ" узнать ситуацию на рынке труда?

Потому что это стация про этом как скачать и обработать данные с HH с помощью python, доказательство репрезентативности выборки оставляю другим. Наверное вы уже заметили что тоже не определил вакансии по городом ли областям etc. Это стация сможет становить базу для полноценного анализа. Сможете сделать статью по вашим запросом, с радостью ознакомлюсь, удачи!
Кстати, если у вас есть лучшие источники чем HH, то напишите в личку или оставите здесь, многим понадобиться.
Парсер hh
# !/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
import xlsxwriter # pip install XlsxWriter
import requests # pip install requests
from bs4 import BeautifulSoup as bs # pip install beautifulsoup4

headers = {'accept': '*/*', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
vacancy = input('Укажите название вакансии: ')
base_url = f'https://hh.ru/search/vacancy?area=1&search_period=30&text={vacancy}&page=' # area=1 - Москва, search_period=3 - За 30 последних дня
pages = int(input('Укажите кол-во страниц для парсинга: '))
#Юрист+юрисконсульт
jobs =[]

def hh_parse(base_url, headers):
        zero = 0
        while pages > zero:
                zero = str(zero)
                session = requests.Session()
                request = session.get(base_url + zero, headers = headers)
                if request.status_code == 200:
                        soup = bs(request.content, 'html.parser')
                        divs = soup.find_all('div', attrs = {'data-qa': 'vacancy-serp__vacancy'})
                        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 = 'None'
                                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']
                                try:
                                        company = div.find('a', attrs = {'data-qa': 'vacancy-serp__vacancy-employer'}).text
                                except:
                                        company = 'None'
                                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 = text1 + '  ' + text2
                                all_txt = [title, compensation, company, content, href]
                                jobs.append(all_txt)
                        zero = int(zero)
                        zero += 1

                else:
                        print('error')

                # Запись в Excel файл
                workbook = xlsxwriter.Workbook('Vacancy.xlsx')
                worksheet = workbook.add_worksheet()
                # Добавим стили форматирования
                bold = workbook.add_format({'bold': 1})
                bold.set_align('center')
                center_H_V = workbook.add_format()
                center_H_V.set_align('center')
                center_H_V.set_align('vcenter')
                center_V = workbook.add_format()
                center_V.set_align('vcenter')
                cell_wrap = workbook.add_format()
                cell_wrap.set_text_wrap()

                # Настройка ширины колонок
                worksheet.set_column(0, 0, 35)  # A  https://xlsxwriter.readthedocs.io/worksheet.html#set_column
                worksheet.set_column(1, 1, 20) # B
                worksheet.set_column(2, 2, 40) # C
                worksheet.set_column(3, 3, 135) # D
                worksheet.set_column(4, 4, 45) # E

                worksheet.write('A1', 'Наименование', bold)
                worksheet.write('B1', 'Зарплата', bold)
                worksheet.write('C1', 'Компания', bold)
                worksheet.write('D1', 'Описание', bold)
                worksheet.write('E1', 'Ссылка', bold)

                row = 1
                col = 0
                for i in jobs:
                        worksheet.write_string (row, col, i[0], center_V)
                        worksheet.write_string (row, col + 1, i[1], center_H_V)
                        worksheet.write_string (row, col + 2, i[2], center_H_V)
                        worksheet.write_string (row, col + 3, i[3], cell_wrap)
                        # worksheet.write_url (row, col + 4, i[4], center_H_V) 
                        worksheet.write_url (row, col + 4, i[4])
                        row += 1

                print('OK')
        workbook.close()

hh_parse(base_url, headers)


Код не авторский, кроме некоторых костылей.
Sign up to leave a comment.

Articles