#python #selenium #selenium-webdriver #bots
Вопрос:
#this is the section where I think I need help
def random_comment():
with open('comments.txt', 'r') as f:
comments = [line.strip() for line in f]
comment = random.choice(comments)
return comment
#comment=============================
for url in urls:
print('Commenting to this post ---> ' url)
comment = random_comment()
bot.get(url)
bot.implicitly_wait(1)
time.sleep(5)
bot.find_element_by_xpath('//*[@id="react-root"]/section/main/div/div/article/div[3]/section[1]/span[2]/button').click()
if doesnt_exist(bot, '//*[@id="react-root"]/section/main/section/div'):
print('Skipped - comments disabled')
else:
find_textarea = (
By.XPATH, '//*[@id="react-root"]/section/main/section/div/form/textarea')
WebDriverWait(bot, 50).until(
EC.presence_of_element_located(find_textarea)
)
comment_box = bot.find_element(*find_textarea)
WebDriverWait(bot, 50).until(
EC.element_to_be_clickable(find_textarea)
)
comment_box.click()
comment_box.send_keys(comment)
Комментарии содержатся в файле с именем .txt
comments.txt для этой цели тестирования комментарии составляют 1,2,….,10, которые каждый номер в своей строке.
Я хочу, чтобы бот-комментатор комментировал их без повторения цифр.
если возможно, даже удалите номер после комментария.
Ответ №1:
Если вы хотите сделать выбор, не повторяясь, вы можете сделать следующее:
- Читать comments.txt всего один раз и сохраните список всех комментариев в переменной.
- Сделав выбор, вам нужно удалить этот выбор из списка всех комментариев.
Например:
class Comments:
def __init__(self):
with open('comments.txt', 'r') as f:
self.comments = [line.strip() for line in f]
def choice_comment(self):
comment = random.choice(self.comments)
self.comments.remove(comment)
return comment
Если вы хотите удалить номер из комментария (если файл выглядит так:
1. One comment
2. Two comment
........
10. Ten comment
), вы можете разделить строку на точки и соединить все строки обратно без первой (это число):
comment = '. '.join(comment.split('. ')[1:])
Комментарии:
1. это дает мне эту ошибку: ошибка имени: имя » я » не определено
2. Если в вашем коде нет классов, вы не можете использовать self в своем коде, и вам нужно переписать код и использовать функции, поэтому вам нужно поместить код в функцию init вне любых функций без»self». (вы делаете переменные «комментарии» глобальными). Также вам нужно удалить «self» из функции choice_comment.