#python #tkinter #bots
#python #tkinter #боты
Вопрос:
По сути, я создаю бота с целью обучения, то, что я пытаюсь сделать, это добавить запятые с комментариями, чтобы добавлять комментарии, но это не работает, если пользователь добавляет в поле для комментариев что-то вроде привет, «потрясающе», «круто», затем бот комментирует случайные слова, такие как «h», «y»,»I, в основном это рандомизация первого символа,
Вот коды
def comment(driver, comment_custom,hashtags,count):
url = "https://www.instagram.com/explore/tags/" hashtags
driver.get(url)
wait = WebDriverWait(driver,10)
path = "/html/body/div[1]/section/main/article/div[1]/div/div/div[1]/div[1]/a/div/div[2]"
first_photo = wait.until(EC.presence_of_element_located((By.XPATH,path)))
first_photo.click()
time.sleep(1)
next_button1st = driver.find_element_by_xpath("/html/body/div[6]/div[1]/div/div/div/button")
next_button1st.click()
time.sleep(1)
for i in range (int(count)):
#comments on photo
path = "/html/body/div[6]/div[2]/div/article/div/div[2]/div/div/div[2]/section[3]/div/form/textarea"
comment = wait.until(EC.presence_of_element_located((By.CLASS_NAME,"Ypffh")))
comment.click()
time.sleep(1)
commet_text = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "Ypffh")))
comment = comment_custom[randint(0, len(comment_custom)-1)]
commet_text.send_keys(comment)
#post comment button
post_button = wait.until(
EC.element_to_be_clickable((By.XPATH, "//button[contains(.,'Post')]")))
post_button.click()
time.sleep(1)
next_button2st = wait.until(EC.presence_of_element_located((By.XPATH,"/html/body/div[6]/div[1]/div/div/div[2]/button")))
next_button2st.click()
и это код tkinter
Comments_with_hash = Button(root, text="Comments_with_hashtags", height=1, width = 30,
command=lambda:comment(driver,comments.get(),hashtag.get(),likecount.get()))
Comments_with_hash.grid(padx=5,pady=5)
А вот фотография бота
https://prnt.sc/21k1nsr.png
Ожидаемые комментарии, которые я хочу
Nice and then Amazing and then amazing and nice basically in random
ОТРЕДАКТИРОВАНО
Не удается рандомизировать время ожидания
в основном то, что я хочу сделать, это ввести пользователем 2 числа, например 1,5, чтобы рандомизировать время между каждой операцией.
Изображение бота:https
://prnt.sc/21nj6xm коды, которые я использую
time.sleep(randint(int(delay)))
Ошибка
time.sleep(randint(int((delay))))
ValueError: invalid literal for int() with base 10: '1,5'
Комментарии:
1. что такое
comment_custom
? Если это строка, то с помощьюcomment_custom[value]
вы получаете один символ из строки. И это может быть вашей проблемой. Это должен быть список строк. Кстати: корочеrandom.choice(list_of_strings)
. ЕСЛИ у вас есть строка с запятыми, вы должны использоватьtext.split(",")
для создания списка со строками, а затем вы можете использовать случайную строку из этого списка.2. кажется, вы используете string
"1, 5"
, но вам нужно использовать два целыхrandint(1, 5)
числа, или вам нужно разделить текст"1,5"
на две строкиvalues = delay.split(",")
, а затем преобразовать каждое значение отдельноrandint( int(values[0]), int(values[1]) )
3. я попробовал ваш код, это то, что я добавил в свой код, где я хотел добавить sleep ——> values = delay.split(«,») randint( int(значения [0]), int(значения[1]) ) <—- и вполе задержки я добавляю 5,2, затем я получаю эту ошибку «Ошибка значения: пустой диапазон для случайного диапазона() (5, 3, -2)»
4. отображается ошибка
randrange() (5, 3, -2)
, но она должна бытьrandrange( 5, 3, -2 )
. Кажется, вы используете его не в том месте. Вы неправильно( )
5. prnt.sc/21vckq3 взгляните, я думаю, код не находится в неправильном месте
Ответ №1:
Я не могу убежать, но я думаю:
comment_custom
является одинарной строкой, поэтому, используя index comment_custom[index]
, вы получаете один символ из string.
comment_custom = "hey,amazing,cool"
print( comment_custom[0] ) # char `h`
Вы должны преобразовать его в список строк / слов, а затем выбрать слово из списка
comment_custom = "hey,amazing,cool"
words = comment_custom.split(',')
print( words[0] ) # string `hey`
Вы могли бы использовать random.choice(words)
вместо words[random.randint(0, len(words)-1)]
Итак, вы должны сделать
words = comment_custom.split(',')
comment = random.choice(words)
commet_text.send_keys(comment)
Комментарии:
1. слова = comment_custom.split(‘,’) <Это сделало свое дело, спасибо, брат
2. Я тоже пытаюсь рандомизировать функцию time.sleep , но я не могу заставить ее работать, пожалуйста, проверьте отредактированный код выше. Спасибо