Найти в Дзене

Как обманывают с обучением на Тестировщика

Так быстро не каждый сможет
На нашем канале расскажем без теории
Канал не художественного чтения , поэтому начнем писать парсер . Писать будем python 3
import csv
Оглавление
Так быстро не каждый сможет
Так быстро не каждый сможет

На нашем канале расскажем без теории

Канал не художественного чтения , поэтому начнем писать парсер . Писать будем python 3

import csv
import requests
from bs4 import BeautifulSoup as bs
from fake_useragent import UserAgent
ua = UserAgent()
# proxies=proxies -если нужны прокси, то нужно добавить это в запрос
proxies = {
'https' : 'https://89.187.181.71:3128' ,
}
headers = {'User-Agent' : ua.chrome}
base_url = 'https://spb.hh.ru/vacancies/testirovshik_po?page='
def hh_parser (base_url, headers):
vacancies = []
urls = []
urls.append(base_url)
session = requests.Session()
request = session.get(base_url, headers =headers)
if request.status_code == 200 :
soup = bs(request.content, 'lxml' )
try :
pagination = soup.find_all('a' , attrs ={'data-qa' : 'pager-page' })
count = int (pagination[-1 ].text)
for i in range (count):
url = f'https://spb.hh.ru/vacancies/testirovshik_po?page= { i} '
if url not in urls:
urls.append(url)
except :
pass
for url in urls:
request = session.get(url, headers =headers)
soup = bs(request.content, 'lxml' )
divs = soup.find_all('div' , attrs ={'class' : 'vacancy-serp-item' })

for div in divs:
try :
title = div.find('a' , attrs ={'data-qa' : 'vacancy-serp__vacancy-title' }).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
zarplata = div.find('span' , attrs ={'data-qa' : 'vacancy-serp__vacancy-compensation' }).text
datatime = div.find('span' , attrs ={'class' : 'vacancy-serp-item__publication-date' }).text
content = text1 + ' ' + text2
vacancies.append({
'title' : title,
'href' : href,
'company' : company,
'content' : content,
'zarplata' : zarplata,
'datatime' : datatime
})
except :
pass

print (len (vacancies))

else :
print ('ERROR or done. Status_code = ' + str (request.status_code))
return vacancies
def files_writer (vacancies):
with open ('parsed_jobs.csv' , 'w' , encoding ='utf8' , newline ='' ) as file:
a_pen = csv.writer(file)
a_pen.writerow(('Название вакансии' , 'Зарплата' , 'Дата размещения' , 'URL' , 'Название компании' , 'Описание' ))
for vacancy in vacancies:
a_pen.writerow((vacancy['title' ], vacancy['zarplata' ], vacancy['datatime' ], vacancy['href' ], vacancy['company' ], vacancy['content' ]))

vacancies = hh_parser(base_url, headers)
files_writer(vacancies)
4 914 вакансий «тестировщик ПО» висели  за месяц
4 914 вакансий «тестировщик ПО» висели за месяц

В Санкт-Петербурге на момент написания статьи всего 239 вакансий за месяц где указана зарплата

Обещания явно завышены
Обещания явно завышены

Специалист по автоматизированному тестированию/Java QA automation engineer до 90 000 руб. 9 февраля https://spb.hh.ru/vacancy/40614840 Лаборатория качества

QA Engineer / Тестировщик ПО 25 000-50 000 руб. 14 февраля https://spb.hh.ru/vacancy/41491401 Matryoshka Games

Заключение

Тестирование достаточно сложный процесс и поэтому так очень много направлений и после курсов придется соревноваться с со специалистами с опытом и высшим образованием и даже ученой степенью.

При таких ценах и уровнем обучения м за год не компенсировать затраты
При таких ценах и уровнем обучения м за год не компенсировать затраты