From c8fd8b60ec22f4f4e266a7d0c2c42be114ac4513 Mon Sep 17 00:00:00 2001 From: Llloooggg Date: Tue, 21 Apr 2020 21:48:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D1=80=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3,=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B1=D1=80=D0=BE=D1=81=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=BC=D0=BE=D0=BD=D0=B5=D1=82=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=84=D0=B5=D1=81=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 202 +++++++++++++++++++++++++++------------------------- 1 file changed, 104 insertions(+), 98 deletions(-) diff --git a/__init__.py b/__init__.py index 24902a6..cf93db4 100644 --- a/__init__.py +++ b/__init__.py @@ -8,138 +8,144 @@ from bs4 import BeautifulSoup from datetime import datetime -def button_by_text(text): # получение кнопки по тексту на ней +def button_by_text(text): # получение кнопки по тексту на ней - try: - button = driver.find_element_by_xpath(f'//*[contains(text(), "{text}")]') - button.click() - return True - except Exception: - return False + try: + button = driver.find_element_by_xpath( + f'//*[contains(text(), "{text}")]') + button.click() + return True + except Exception: + return False -def get_profession(): # получение случайной профессии в РФ, где 1 и 2 диапазон - профессии рабочих, 2 и 3 - должности служащих - while True: - - coin = (1, 2, 3, 4) - coin = random.choices(coin, [0.1, 0.1, 0.4, 0.4], k=1)[0] +def get_profession(): # получение случайной профессии в РФ, где 1 и 2 диапазон - профессии рабочих, 2 и 3 - должности служащих - if coin == 1: - code = random.randint(10003, 19975) - elif coin == 2: - code = random.randint(30018, 33270) - elif coin == 3: - code = random.randint(20001, 27933) - else: - code = random.randint(40064, 47110) + coin = (1, 2, 3, 4) + coin = random.choices(coin, [0.1, 0.1, 0.4, 0.4], k=1)[0] - page = requests.get(f'http://okpdtr.ru/?s={code}').text - soup = BeautifulSoup(page, features='html.parser') - try: - profession = soup.findAll("div", {"class": "my_col2"})[1] - profession = re.sub(r'\([^()]*\)', '', profession.get_text()) - return profession - except: - pass + while True: + + if coin == 1: + code = random.randint(10003, 19975) + elif coin == 2: + code = random.randint(30018, 33270) + elif coin == 3: + code = random.randint(20001, 27933) + else: + code = random.randint(40064, 47110) + + page = requests.get(f'http://okpdtr.ru/?s={code}').text + soup = BeautifulSoup(page, features='html.parser') + try: + profession = soup.findAll("div", {"class": "my_col2"})[1] + profession = re.sub(r'\([^()]*\)', '', profession.get_text()) + return profession + except: + pass def profile_maker(): - global areas_of_activity + global areas_of_activity - forms_list = driver.find_elements_by_class_name('freebirdFormviewerViewItemsItemItem') # получение форм со страницы - for form in forms_list: + forms_list = driver.find_elements_by_class_name( + 'freebirdFormviewerViewItemsItemItem') # получение форм со страницы + for form in forms_list: - header = form.find_element_by_class_name('freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы + header = form.find_element_by_class_name( + 'freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы - if header[-1:] == '*': - header = header[:-2] + if header[-1:] == '*': + header = header[:-2] - if header == 'Укажите Ваш пол': - buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы - button = random.choices(buttons_list, [0.7, 0.3], k=1)[0] - button.click() + if header == 'Укажите Ваш пол': + buttons_list = form.find_elements_by_class_name( + 'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы + button = random.choices(buttons_list, [0.7, 0.3], k=1)[0] + button.click() - elif header == 'Укажите Ваш возраст (полных лет)': - age = random.randint(18, 56) - field = form.find_elements_by_class_name('quantumWizTextinputPaperinputInput')[0] # получение полей для ввода с формы - field.click() - field.send_keys(age) + elif header == 'Укажите Ваш возраст (полных лет)': + age = random.randint(18, 56) + field = form.find_elements_by_class_name('quantumWizTextinputPaperinputInput')[ + 0] # получение полей для ввода с формы + field.click() + field.send_keys(age) - elif header == 'Укажите Ваше образование (возможно несколько вариантов)': - buttons_list = form.find_elements_by_class_name('quantumWizTogglePapercheckboxEl') # получение чекбоксов с формы - buttons_list[random.randint(0, 4)].click() + elif header == 'Укажите Ваше образование (возможно несколько вариантов)': + buttons_list = form.find_elements_by_class_name( + 'quantumWizTogglePapercheckboxEl') # получение чекбоксов с формы + buttons_list[random.randint(0, 4)].click() - elif header == 'Выберите из списка основную сферу деятельности организации, в которой Вы сейчас работаете': - form.find_elements_by_class_name('quantumWizMenuPaperselectOption')[0].click() - coin = random.randint(3, 24) - variants_list = form.find_element_by_xpath(f'//*[@id="mG61Hd"]/div/div/div[2]/div[5]/div/div[2]/div[2]/div[{coin}]') # перебор элементов выпадающего списка - variants_list.click() - time.sleep(3) + elif header == 'Выберите из списка основную сферу деятельности организации, в которой Вы сейчас работаете': + form.find_elements_by_class_name( + 'quantumWizMenuPaperselectOption')[0].click() + coin = random.randint(3, 24) + variants_list = form.find_element_by_xpath( + f'//*[@id="mG61Hd"]/div/div/div[2]/div[5]/div/div[2]/div[2]/div[{coin}]') # перебор элементов выпадающего списка + variants_list.click() + time.sleep(3) - elif header == 'Укажите Ваш стаж работы (полных лет) в указанной организации': - buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы - buttons_list[random.randint(0, len(buttons_list) - 1)].click() + elif header == 'Укажите Ваш стаж работы (полных лет) в указанной организации': + buttons_list = form.find_elements_by_class_name( + 'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы + buttons_list[random.randint(0, len(buttons_list) - 1)].click() - elif header == 'Укажите тип Вашей должности': - buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы - buttons_list[random.randint(0, len(buttons_list) - 1)].click() + elif header == 'Укажите тип Вашей должности': + buttons_list = form.find_elements_by_class_name( + 'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы + buttons_list[random.randint(0, len(buttons_list) - 1)].click() - elif header == 'Укажите название Вашей должности': - field = form.find_elements_by_class_name('quantumWizTextinputPapertextareaInput')[0] # получение полей для ввода с формы - field.click() - field.send_keys(get_profession()) + elif header == 'Укажите название Вашей должности': + field = form.find_elements_by_class_name('quantumWizTextinputPapertextareaInput')[ + 0] # получение полей для ввода с формы + field.click() + field.send_keys(get_profession()) - elif header == 'Укажите Ваш стаж работы в текущей должности (полных лет)': - buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы - buttons_list[random.randint(0, len(buttons_list) - 1)].click() + elif header == 'Укажите Ваш стаж работы в текущей должности (полных лет)': + buttons_list = form.find_elements_by_class_name( + 'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы + buttons_list[random.randint(0, len(buttons_list) - 1)].click() def bulldozer(): - forms_list = driver.find_elements_by_class_name('freebirdFormviewerViewItemsItemItem') # получение форм со страницы - for form in forms_list: - header = form.find_element_by_class_name('freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы - if header[-1:] == '*': - header = header[:-2] + forms_list = driver.find_elements_by_class_name( + 'freebirdFormviewerViewItemsItemItem') # получение форм со страницы + for form in forms_list: + header = form.find_element_by_class_name( + 'freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы + if header[-1:] == '*': + header = header[:-2] + + buttons_list = form.find_elements_by_class_name( + 'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы + buttons_list[random.randint(0, len(buttons_list) - 1)].click() - buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы - buttons_list[random.randint(0, len(buttons_list) - 1)].click() - if __name__ == '__main__': - url = 'https://docs.google.com/forms/d/1f716YOLUrKhtjTlR4hYiEWkgwjqylR5fCPxWsHQKJqY' - resnondents = int(input('Введите желаемое число респондентов: ')) + url = 'https://docs.google.com/forms/d/1f716YOLUrKhtjTlR4hYiEWkgwjqylR5fCPxWsHQKJqY' + resnondents = int(input('Введите желаемое число респондентов: ')) + driver = webdriver.Firefox() - driver = webdriver.Firefox() + with progressbar.ProgressBar(max_value=resnondents) as bar: + for i in range(resnondents): - with progressbar.ProgressBar(max_value=resnondents) as bar: - for i in range(resnondents): + bar.update(i) - bar.update(i) + driver.get(url) - driver.get(url) + button_by_text('Далее') - button_by_text('Далее') + profile_maker() - profile_maker() + while True: - button_by_text('Далее') + if button_by_text('Далее'): + bulldozer() + else: + button_by_text('Отправить') - bulldozer() - - button_by_text('Далее') - - bulldozer() - - button_by_text('Далее') - - button_by_text('Отправить') - - driver.close() - - - - + driver.close()