You've already forked GoogleFormsFiller
mirror of
https://github.com/Llloooggg/GoogleFormsFiller.git
synced 2026-03-06 02:56:23 +03:00
Объединины умный и стандартный бульдозеры
This commit is contained in:
72
__init__.py
72
__init__.py
@@ -10,21 +10,19 @@ from os import path
|
|||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
options = webdriver.firefox.options.Options()
|
|
||||||
options.headless = True
|
|
||||||
driver = webdriver.Firefox(options=options)
|
|
||||||
|
|
||||||
logPath = './respondents.log'
|
logPath = './respondents.log'
|
||||||
|
|
||||||
banList = []
|
banList = []
|
||||||
if path.exists('./ban_list.txt'):
|
if path.exists('./ban_list.txt'):
|
||||||
|
print(datetime.now().strftime('[%X] ') + 'Обнаружен бан-лист')
|
||||||
f = open('./ban_list.txt')
|
f = open('./ban_list.txt')
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
banList.append(line.lower())
|
banList.append(line.rstrip('\r\n').lower())
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
professionsList = []
|
professionsList = []
|
||||||
if path.exists('./professions_list.txt'):
|
if path.exists('./professions_list.txt'):
|
||||||
|
print(datetime.now().strftime('[%X] ') + 'Обнаружен список профессий')
|
||||||
f = open('./professions_list.txt')
|
f = open('./professions_list.txt')
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
banList.append(line.lower())
|
banList.append(line.lower())
|
||||||
@@ -32,6 +30,7 @@ if path.exists('./professions_list.txt'):
|
|||||||
|
|
||||||
weightsList = {}
|
weightsList = {}
|
||||||
if path.exists('./weights_list.txt'):
|
if path.exists('./weights_list.txt'):
|
||||||
|
print(datetime.now().strftime('[%X] ') + 'Обнаружены веса')
|
||||||
f = open('./weights_list.txt')
|
f = open('./weights_list.txt')
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
question = line.split(':')[0]
|
question = line.split(':')[0]
|
||||||
@@ -107,6 +106,7 @@ def not_in_ban_list(word):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def profile_maker():
|
def profile_maker():
|
||||||
|
|
||||||
global driver
|
global driver
|
||||||
@@ -152,7 +152,7 @@ def profile_maker():
|
|||||||
form.find_elements_by_class_name(
|
form.find_elements_by_class_name(
|
||||||
'quantumWizMenuPaperselectOption')[0].click()
|
'quantumWizMenuPaperselectOption')[0].click()
|
||||||
coin = random.randint(3, 24)
|
coin = random.randint(3, 24)
|
||||||
time.sleep(0.5)
|
time.sleep(1)
|
||||||
variant = form.find_element_by_xpath(
|
variant = form.find_element_by_xpath(
|
||||||
f'/html/body/div/div[2]/form/div/div/div[2]/div[5]/div/div[2]/div[2]/div[{coin}]') # перебор элементов выпадающего списка
|
f'/html/body/div/div[2]/form/div/div/div[2]/div[5]/div/div[2]/div[2]/div[{coin}]') # перебор элементов выпадающего списка
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ def another_profile_maker():
|
|||||||
button.click()
|
button.click()
|
||||||
|
|
||||||
|
|
||||||
def smart_buildozer():
|
def buildozer():
|
||||||
|
|
||||||
global driver, weightsList
|
global driver, weightsList
|
||||||
|
|
||||||
@@ -316,32 +316,17 @@ def smart_buildozer():
|
|||||||
|
|
||||||
buttons_list = form.find_elements_by_class_name(
|
buttons_list = form.find_elements_by_class_name(
|
||||||
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
|
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
|
||||||
button = random.choices(buttons_list, weightsList[header], k=1)[0]
|
if weightsList:
|
||||||
button.click()
|
button = random.choices(buttons_list, weightsList[header], k=1)[0].click()
|
||||||
|
else:
|
||||||
|
buttons_list[random.randint(0, len(buttons_list) - 1)].click()
|
||||||
def bulldozer():
|
|
||||||
|
|
||||||
global driver
|
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
global driver
|
global driver
|
||||||
|
|
||||||
url = 'https://docs.google.com/forms/d/1f716YOLUrKhtjTlR4hYiEWkgwjqylR5fCPxWsHQKJqY'
|
url = 'https://docs.google.com/forms/d/1f716YOLUrKhtjTlR4hYiEWkgwjqylR5fCPxWsHQKJqY/viewform'
|
||||||
# url = int(input('Введите ссылку на форму: '))
|
# url = int(input('Введите ссылку на форму: '))
|
||||||
respondents = int(input(datetime.now().strftime(
|
respondents = int(input(datetime.now().strftime(
|
||||||
'[%X] ') + 'Введите желаемое число респондентов: '))
|
'[%X] ') + 'Введите желаемое число респондентов: '))
|
||||||
@@ -352,6 +337,11 @@ def main():
|
|||||||
|
|
||||||
with progressbar.ProgressBar(max_value=respondents) as bar:
|
with progressbar.ProgressBar(max_value=respondents) as bar:
|
||||||
for i in range(respondents):
|
for i in range(respondents):
|
||||||
|
|
||||||
|
options = webdriver.firefox.options.Options()
|
||||||
|
options.headless = True
|
||||||
|
driver = webdriver.Firefox(options=options)
|
||||||
|
|
||||||
bar.update(i)
|
bar.update(i)
|
||||||
|
|
||||||
driver.get(url)
|
driver.get(url)
|
||||||
@@ -361,15 +351,16 @@ def main():
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
if button_by_text('Далее'):
|
if button_by_text('Далее'):
|
||||||
bulldozer()
|
buildozer()
|
||||||
else:
|
else:
|
||||||
button_by_text('Отправить')
|
button_by_text('Отправить')
|
||||||
break
|
break
|
||||||
|
|
||||||
log('Опрошен')
|
log('Опрошен')
|
||||||
|
|
||||||
driver.close()
|
driver.quit()
|
||||||
|
|
||||||
|
log('Опрос завершен')
|
||||||
print(datetime.now().strftime('[%X] ') + 'Завершено')
|
print(datetime.now().strftime('[%X] ') + 'Завершено')
|
||||||
|
|
||||||
|
|
||||||
@@ -386,22 +377,33 @@ def another_main():
|
|||||||
|
|
||||||
with progressbar.ProgressBar(max_value=respondents) as bar:
|
with progressbar.ProgressBar(max_value=respondents) as bar:
|
||||||
for i in range(respondents):
|
for i in range(respondents):
|
||||||
|
|
||||||
|
options = webdriver.firefox.options.Options()
|
||||||
|
options.headless = True
|
||||||
|
driver = webdriver.Firefox(options=options)
|
||||||
|
|
||||||
bar.update(i)
|
bar.update(i)
|
||||||
|
|
||||||
driver.get(url)
|
driver.get(url)
|
||||||
|
|
||||||
while True:
|
button_by_text('Далее')
|
||||||
if button_by_text('Далее'):
|
|
||||||
smart_buildozer()
|
for i in range(3):
|
||||||
else:
|
try:
|
||||||
break
|
buildozer()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
button_by_text('Далее')
|
||||||
|
|
||||||
|
|
||||||
another_profile_maker()
|
another_profile_maker()
|
||||||
button_by_text('Отправить')
|
button_by_text('Отправить')
|
||||||
|
|
||||||
|
driver.quit()
|
||||||
|
|
||||||
print(datetime.now().strftime('[%X] ') + 'Завершено')
|
print(datetime.now().strftime('[%X] ') + 'Завершено')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
another_main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user