파이톤으로 대량 WhatsApp 메시지 보내기 | 파이톤으로 자동화 WhatsApp 사용하기
46733 단어 beginnersprogrammingpythontutorial
내 채널을 구독하는 것을 잊지 말고 벨소리 아이콘을 눌러라. 이렇게 하면 내가 새 블로그를 올릴 때마다 너는 통지를 받을 수 있다
이 블로그는python 스크립트를 만드는 데 중심을 두고 excel에서 전화번호, 이름, 메시지를 읽고 Whats App 메시지를 대량으로 해당하는 전화번호로 보낼 것입니다.문제는 전화번호가 왓츠앱 메시지를 보내는 장치에 저장돼야 한다는 점이다.
이 블로그에서 나는 토론할 것이다
WhatsApp 웹 사이트
WhatsApp 웹 사이트
WhatsApp 사이트는 WhatsApp의 기능으로 사용자가 자신의 응용 프로그램을 조작할 수 있게 한다
노트북이나 데스크톱 브라우저에서 WhatsApp을 다운로드합니다.왓츠앱 사이트를 이용하는 절차는 컴퓨터에서 크롬 브라우저를 열고 사이트를 열면 간단하다.whatsapp.com, 그리고 핸드폰으로 나오는 QR코드를 스캔하면 당신의 Whats App이 크롬 브라우저에 나타납니다.여기서는 누구나 단체에 메시지를 보낼 수도 있고 왓츠앱 상태를 볼 수도 있다.
이 스크립트는selenium 라이브러리 자동화 브라우저를 사용하고 Whats App의 여러 연락처에 대량 메시지를 보냅니다.
스크립트의 기본 작업을 이해한 후에 계속
스크립트에 대한 기능 분석을 진행하다.
import art, time, os, platform
from colorama import init, Fore
from termcolor import colored
import pandas as pd
import datetime
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
스크립트는 필요한 모든 모듈을 먼저 가져옵니다. 각본만약 당신이 그것이 어떻게 작동하는지 알고 싶다면, 당신은 볼 수 있습니다 this blog.
시간 다 됐습니다.sleep()
여기 있습니다.
극본만약 네가 그들을 더 많이 알고 싶다면, 너는 가서 보아라
this blog .
여기 방금 가져온 거예요
FILE_LOC = "data.xlsx"
SRNO = 'SRNO'
NAME = 'Name'
PHONENUMBER = 'Phone Number'
MESSAGE = 'Message'
REPLACENAME = '{{name}}'
URL = 'https://web.whatsapp.com/'
WAITER_ELEMENT = "landing-title _3-XoE"
PHONE_NUMER_INPUT = "//*[@id='side']/div[1]/div/label/div/div[2]"
PERSON_DIV = "//*[@id='pane-side']/div[1]/div/div/div[1]/div/div/div[1]/div/div/img"
MESSAGE_INPUT = "//*[@id='main']/footer/div[1]/div[2]/div/div[1]/div/div[2]"
SEND_BUTTON = "//*[@id='main']/footer/div[1]/div[2]/div/div[2]/button"
다음은 스크립트에서 사용하는 모든 상수를 소개합니다. URL, excel 필드 이름, 단추, 텍스트 상자 XPath 등을 포함합니다. XPath는 기본적으로 검색 필터와 유사하며 HTML 페이지의 어떤 요소나 그룹의 요소를 식별하는 데 사용됩니다.driver = webdriver.Chrome('chromedriver.exe')
driver.implicitly_wait(10)
waiter = WebDriverWait(driver, 10)
data = []
다음에 우리는 시작하고 설정했다각본
def printData(message, type):
if type == 'INFO':
print('[' + colored(datetime.datetime.now().strftime('%H:%M:%S'), 'cyan') + '][' + colored('INFO', 'green') + '] ' + message)
elif type == 'WARNING':
print('[' + colored(datetime.datetime.now().strftime('%H:%M:%S'), 'cyan') + '][' + colored('WARNING', 'yellow') + '] ' + message)
elif type == 'ERROR':
print('[' + colored(datetime.datetime.now().strftime('%H:%M:%S'), 'cyan') + '][' + colored('ERROR', 'red') + '] ' + message)
이제 스크립트의 첫 번째 함수인 printData 함수가 생겼습니다.이 함수는 메시지와 type 두 개의 인자가 필요합니다.이 기능은 콘솔에서 정보, 경고 또는 오류를 포함한 컬러 데이터를 인쇄하는 데 사용됩니다.이 함수는 전달된 유형을 확인하고 컨트롤에 메시지를 출력하기만 하면 된다.
def read_data_from_excel():
try:
df = pd.read_excel(FILE_LOC)
printData("Retrieving data from excel", 'INFO')
except:
printData("Excel 'data.xlsx' not found", 'ERROR')
printData("Found {0} messages to be send".format(len(df.index)), 'INFO')
for i in df.index:
if '+' not in str(df[PHONENUMBER][i]):
number = '+91' + str(df[PHONENUMBER][i])
else:
number = str(df[PHONENUMBER][i])
output = {
'SrNo': df[SRNO][i],
'Name': df[NAME][i],
'PhoneNumber': number,
'Message': df[MESSAGE][i].replace(REPLACENAME, df[NAME][i])
}
data.append(output)
다음에는 데이터에서 보낼 모든 메시지를 읽는 read data from excel() 함수가 있습니다.xlsx 파일.이 함수는pandas 라이브러리를 사용하여 excel에서 데이터를 읽고 excel 항목을 스크립트의 데이터 목록에 저장합니다.def send_whatsapp_message():
global driver
driver.get(URL)
printData("Loading site...", 'INFO')
waiter.until(EC.title_is("WhatsApp"))
printData("Site loaded successfully...", 'INFO')
printData("Waiting for user to log in using WhatsApp Web", 'INFO')
waitCounter = 0
while 1:
try:
waiter.until(EC.presence_of_element_located((By.XPATH, "//canvas[@aria-label='Scan me!']")))
waitCounter+=1
if waitCounter%1000 == 0:
printData("Waiting for user to log in...", 'WARNING')
except:
printData("Logged in to WhatsApp", 'INFO')
break
for entry in data:
driver.find_element_by_xpath(PHONE_NUMER_INPUT).send_keys(str(entry['PhoneNumber']))
time.sleep(5)
driver.find_element_by_xpath(PHONE_NUMER_INPUT).send_keys(Keys.ENTER)
time.sleep(5)
driver.find_element_by_xpath(MESSAGE_INPUT).send_keys(str(entry['Message']))
time.sleep(5)
driver.find_element_by_xpath(SEND_BUTTON).click()
time.sleep(5)
printData("Successfully send message to {0}, name: {1}".format(str(entry['PhoneNumber']), str(entry['Name'])), 'INFO')
다음은 스크립트에서 가장 중요한 함수인 send whatsapp message () 함수를 소개합니다.이 기능은 데이터 목록에서 연락처를 읽고 각 연락처에 WhatsApp 메시지를 보내는 것을 책임진다. 이 기능은 먼저 WhatsApp 사이트를 로드한 다음 로드를 기다립니다.사이트를 로드하면 스크립트는 사용자가 QR코드를 검색하고 사이트에 로그인할 때까지 기다립니다.사용자가 로그인하면 스크립트는 모든 연락처를 검색하고 채팅방을 열고 메시지를 입력하여 보냅니다.
if __name__ == '__main__':
# Initialize colorama
init()
# Clear the screen
if platform.system() == 'Windows':
os.system('cls')
else:
os.system('clear')
# Display ASCII art
print(art.text2art("WhatsApp Python"))
print(Fore.CYAN + "\nCreated By:" + Fore.RESET + " Vishesh Dvivedi [All About Python]\n")
print(Fore.YELLOW + "GitHub: " + Fore.RESET + " visheshdvivedi")
print(Fore.YELLOW + "Youtube:" + Fore.RESET + " All About Python")
print(Fore.YELLOW + "Instagram:" + Fore.RESET + " @itsallaboutpython")
print(Fore.YELLOW + "Blog Site:" + Fore.RESET + " itsallaboutpython.blogspot.com\n")
# Read data from 'data.xlsx' file
read_data_from_excel()
# Send whatsapp message
send_whatsapp_message()
# Close chromedriver
driver.close()
마지막으로 우리는 주요 기능을 가지게 되었다.만약if name =' main;의 사용법을 잘 모르면, 이 화제를 전문적으로 토론하는 블로그를 내 채널에서 볼 수 있다.주 함수에서 먼저 init()를 사용하여 Colorama를 초기화합니다.다음은 화면을 지우기 위해 사용하는 운영체제에 따라 코드 세션을 사용하여 운영체제 명령을 실행합니다.다음으로art 모듈은 스크립트를 표시하는 ASCII are입니다. 아래에서 연락처를 찾을 수 있습니다.
마지막으로 read data from excel() 및
send whatsapp message() 함수, 이 함수 실행
함수는 우리가 전에 토론한 것과 같다.그리고 스크립트를 끝내기 위해 드라이버를 닫습니다.
이것이 바로 이 극본의 전체 내용이다.이것은 완전한 코드다.
import art, time, os, platform
from colorama import init, Fore
from termcolor import colored
import pandas as pd
import datetime
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
FILE_LOC = "data.xlsx"
SRNO = 'SRNO'
NAME = 'Name'
PHONENUMBER = 'Phone Number'
MESSAGE = 'Message'
REPLACENAME = '{{name}}'
URL = 'https://web.whatsapp.com/'
WAITER_ELEMENT = "landing-title _3-XoE"
PHONE_NUMER_INPUT = "//*[@id='side']/div[1]/div/label/div/div[2]"
PERSON_DIV = "//*[@id='pane-side']/div[1]/div/div/div[1]/div/div/div[1]/div/div/img"
MESSAGE_INPUT = "//*[@id='main']/footer/div[1]/div[2]/div/div[1]/div/div[2]"
SEND_BUTTON = "//*[@id='main']/footer/div[1]/div[2]/div/div[2]/button"
driver = webdriver.Chrome('chromedriver.exe')
driver.implicitly_wait(10)
waiter = WebDriverWait(driver, 10)
data = []
def printData(message, type):
if type == 'INFO':
print('[' + colored(datetime.datetime.now().strftime('%H:%M:%S'), 'cyan') + '][' + colored('INFO', 'green') + '] ' + message)
elif type == 'WARNING':
print('[' + colored(datetime.datetime.now().strftime('%H:%M:%S'), 'cyan') + '][' + colored('WARNING', 'yellow') + '] ' + message)
elif type == 'ERROR':
print('[' + colored(datetime.datetime.now().strftime('%H:%M:%S'), 'cyan') + '][' + colored('ERROR', 'red') + '] ' + message)
def read_data_from_excel():
try:
df = pd.read_excel(FILE_LOC)
printData("Retrieving data from excel", 'INFO')
except:
printData("Excel 'data.xlsx' not found", 'ERROR')
printData("Found {0} messages to be send".format(len(df.index)), 'INFO')
for i in df.index:
if '+' not in str(df[PHONENUMBER][i]):
number = '+91' + str(df[PHONENUMBER][i])
else:
number = str(df[PHONENUMBER][i])
output = {
'SrNo': df[SRNO][i],
'Name': df[NAME][i],
'PhoneNumber': number,
'Message': df[MESSAGE][i].replace(REPLACENAME, df[NAME][i])
}
data.append(output)
def send_whatsapp_message():
global driver
driver.get(URL)
printData("Loading site...", 'INFO')
waiter.until(EC.title_is("WhatsApp"))
printData("Site loaded successfully...", 'INFO')
printData("Waiting for user to log in using WhatsApp Web", 'INFO')
waitCounter = 0
while 1:
try:
waiter.until(EC.presence_of_element_located((By.XPATH, "//canvas[@aria-label='Scan me!']")))
waitCounter+=1
if waitCounter%1000 == 0:
printData("Waiting for user to log in...", 'WARNING')
except:
printData("Logged in to WhatsApp", 'INFO')
break
for entry in data:
driver.find_element_by_xpath(PHONE_NUMER_INPUT).send_keys(str(entry['PhoneNumber']))
time.sleep(5)
driver.find_element_by_xpath(PHONE_NUMER_INPUT).send_keys(Keys.ENTER)
time.sleep(5)
driver.find_element_by_xpath(MESSAGE_INPUT).send_keys(str(entry['Message']))
time.sleep(5)
driver.find_element_by_xpath(SEND_BUTTON).click()
time.sleep(5)
printData("Successfully send message to {0}, name: {1}".format(str(entry['PhoneNumber']), str(entry['Name'])), 'INFO')
if __name__ == '__main__':
# Initialize colorama
init()
# Clear the screen
if platform.system() == 'Windows':
os.system('cls')
else:
os.system('clear')
# Display ASCII art
print(art.text2art("WhatsApp Python"))
print(Fore.CYAN + "\nCreated By:" + Fore.RESET + " Vishesh Dvivedi [All About Python]\n")
print(Fore.YELLOW + "GitHub: " + Fore.RESET + " visheshdvivedi")
print(Fore.YELLOW + "Youtube:" + Fore.RESET + " All About Python")
print(Fore.YELLOW + "Instagram:" + Fore.RESET + " @itsallaboutpython")
print(Fore.YELLOW + "Blog Site:" + Fore.RESET + " itsallaboutpython.blogspot.com\n")
# Read data from 'data.xlsx' file
read_data_from_excel()
# Send whatsapp message
send_whatsapp_message()
# Close chromedriver
driver.close()
우리는 그것이 어떻게 일을 하는지 빠르게 시범을 보여 줍시다.WhatsApp 자동화 파이썬
이것이 바로 스크립트가 실행될 때의 모습이다.나는 크롬 브라우저와 인터넷을 가지고 있다.whatsapp.com 사이트는 이곳에서 개방합니다.지금 나는 WhatsApp을 사용하여 QR코드를 스캔할 것이다. 나의 WhatsApp은 화면 앞에 나타날 것이다.
이후 스크립트는 모든 연락처에서 연락처를 검색하고 채팅방을 열면 자동으로 메시지를 보냅니다.메시지가 여러 줄이면 줄마다 메시지를 보냅니다.
나는 이것이 네가 이 극본에 대한 의심을 없앴으면 한다.만약 당신에게 또 어떤 의문이 있다면, 아래의 평론에서 언급할 수 있습니다.
이 모든 코드들은 당신들 중 일부에게는 약간 곤혹스러울 수도 있습니다. 대체적이고 간단한 방법으로 코드를 작성할 수 있는지 알고 싶을 수도 있습니다.있다!
pywhatkit
pywhatkit이라는 모듈이 있습니다. 사용자 정의 Whats App 메시지를 보낼 수 있는 방법이 포함되어 있습니다.만약 당신들이 원한다면, 나는 단독 블로그를 써서pywhatkit을 당신들에게 설명할 것입니다.
지금은 본 블로그의 마지막 주제로 블로그를 수정하고 개선하는 것에 대한 생각입니다.내가 이 스크립트를 만든 것은 단지 여러분에게 어떻게 이 스크립트를 만드는지 설명하기 위해서입니다.그러나 스크립트에는 여전히 많은 수정과 개선이 있다.
예를 들어 특정한 시간과 날짜에 Whats App 메시지를 보낼 수 있도록 시간 시스템을 추가할 수 있다.이를 위해send whatsapp 메시지를 호출하기 전에while 순환을 추가해야 합니다.순환은 현재 시간에 분당 한 번 검사됩니다.WhatsApp 메시지를 보낸 시간과 일치하면 순환이 중단되고 메시지가 전송됩니다.
예를 들어, 대기 시간을 위한 상수를 만들 수 있습니다. 이 상수는 메시지를 보낼 때 얼마나 기다려야 하는지 확인하는 데 사용됩니다. 왜냐하면 Whats App 웹이 어떤 경우에 이python 스크립트를 막을 수 있기 때문입니다.
이것이 바로 나의 블로그입니다. 당신들이 나의 블로그를 좋아하길 바랍니다.그렇다면 내 채널을 구독하고 인스타그램과 유튜브를 위해 만든 다른 각종 자동화 스크립트를 보는 것을 잊지 마라.
이것만 있으면 나는 가야 한다. 이것은Vishesh Dvidedi이다. 끝.
Reference
이 문제에 관하여(파이톤으로 대량 WhatsApp 메시지 보내기 | 파이톤으로 자동화 WhatsApp 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/visheshdvivedi/send-bulk-whatsapp-messages-in-python-automate-whatsapp-using-python-ipo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)