Làm cách nào tôi có thể gửi 500 tin nhắn trên WhatsApp bằng Python?

Blog này sẽ tập trung vào việc tạo tập lệnh python sẽ đọc số điện thoại, tên và tin nhắn từ excel, sau đó gửi tin nhắn WhatsApp hàng loạt đến các số điện thoại tương ứng. Một lưu ý ở đây là số điện thoại phải được lưu trên thiết bị đang được sử dụng để gửi tin nhắn WhatsApp

Trong blog này, tôi sẽ thảo luận, về

  1. WhatsApp Web và cách tập lệnh này sử dụng nó
  2. Chức năng phân tích khôn ngoan của kịch bản
  3. Bản demo nhanh giải thích hoạt động của tập lệnh
  4. Một cách khác để tạo tập lệnh
  5. Một số ý tưởng để sửa đổi và cải tiến trong kịch bản

Hãy bắt đầu với WhatsApp Web

web whatsapp


web whatsapp

Web WhatsApp là một tính năng của WhatsApp cho phép bạn vận hành
WhatsApp của mình từ máy tính xách tay hoặc trình duyệt máy tính để bàn của bạn. Các bước để sử dụng web WhatsApp khá đơn giản, chỉ cần mở trình duyệt chrome trong máy tính của bạn và mở trang web. whatsapp. com, tiếp theo hãy quét mã QR xuất hiện bằng điện thoại của bạn và WhatsApp của bạn sẽ xuất hiện trên trình duyệt chrome. Tại đây bạn có thể nhắn tin cho bất kỳ ai hoặc bất kỳ nhóm nào hoặc có thể xem trạng thái WhatsApp.

Tập lệnh này sử dụng thư viện selen để tự động hóa trình duyệt và gửi tin nhắn hàng loạt tới nhiều địa chỉ liên hệ trong WhatsApp

Khi đã hiểu cách hoạt động cơ bản của tập lệnh, hãy chuyển sang phần
phân tích chức năng-khôn ngoan của tập lệnh.

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

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tập lệnh bắt đầu bằng cách nhập tất cả các mô-đun cần thiết.  

  • Mô-đun nghệ thuật được sử dụng để tạo và hiển thị nghệ thuật ASCII cho tập lệnh. Nếu bạn muốn biết nó hoạt động như thế nào, bạn có thể xem blog này
  • Thời gian được sử dụng để tạm dừng thực thi chương trình trong vài giây sử dụng thời gian. ngủ[]
  • Hệ điều hành được sử dụng để chạy các lệnh của hệ điều hành trong tập lệnh
  • Mô-đun nền tảng được sử dụng để xác định hệ điều hành

Hệ điều hành và nền tảng cùng được sử dụng để xóa màn hình, như bạn có thể thấy
tại đây.

  • Colorama và termcolor được sử dụng để hiển thị đầu ra bảng điều khiển màu của tập lệnh. Nếu bạn muốn biết thêm về họ, bạn có thể xem blog này
  • Pandas được sử dụng để đọc dữ liệu từ tệp excel
  • Datetime được sử dụng để tìm ngày và giờ hiện tại
  • Và cuối cùng, chúng ta có selen. Tất cả các câu lệnh nhập mà bạn thấy ở đây chỉ là nhập
  • Các lớp và chức năng cần thiết từ Selenium

FILE_LOC = "data.xlsx"
SRNO = 'SRNO'
NAME = 'Name'
PHONENUMBER = 'Phone Number'
MESSAGE = 'Message'
REPLACENAME = '{{name}}'
URL = '//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"

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tiếp theo, chúng tôi có tất cả các hằng số được sử dụng trong tập lệnh, bao gồm URL, tên trường excel, nút và xpath hộp văn bản, v.v. Chỉ là một ý tưởng nhanh, xpath về cơ bản giống như các bộ lọc tìm kiếm được sử dụng để xác định một phần tử nhất định hoặc một nhóm phần tử trong trang HTML

driver = webdriver.Chrome['chromedriver.exe']
driver.implicitly_wait[10]
waiter = WebDriverWait[driver, 10]
data = []

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tiếp theo, chúng tôi đã bắt đầu và định cấu hình trình điều khiển và người phục vụ của
tập lệnh của chúng tôi.

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]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ chúng ta có chức năng đầu tiên của tập lệnh, chức năng printData

Hàm này yêu cầu hai đối số, thông báo và loại. Chức năng này được sử dụng để in dữ liệu có màu trên bảng điều khiển, có thể là thông tin, cảnh báo hoặc lỗi. Hàm chỉ cần kiểm tra loại được truyền vào nó là gì và theo đó in thông báo trên bàn điều khiển

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]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tiếp theo, chúng ta có hàm read_data_from_excel[] đọc tất cả các thông báo được gửi từ dữ liệu. tập tin xlsx. Hàm sử dụng thư viện của gấu trúc để đọc dữ liệu từ excel và lưu trữ các mục excel trong danh sách dữ liệu trong tập lệnh

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']

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tiếp theo, chúng ta có chức năng quan trọng nhất của tập lệnh, đó là hàm send_whatsapp_message[]. Chức năng này chịu trách nhiệm đọc các liên hệ từ danh sách dữ liệu và gửi từng tin nhắn WhatsApp cho từng người trong số họ.  

Chức năng bắt đầu bằng cách tải trang web WhatsApp và đợi nó tải. Sau khi trang web được tải, tập lệnh sẽ đợi người dùng quét mã QR và đăng nhập vào trang web. Khi người dùng đã đăng nhập, tập lệnh sẽ tìm kiếm từng liên hệ, mở cuộc trò chuyện của họ, nhập tin nhắn và gửi nó

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[]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Và cuối cùng, chúng ta có chức năng chính. Trong trường hợp bạn chưa rõ về cách sử dụng if __name__ == ‘__main__’, thì bạn có thể xem một blog trên kênh của tôi dành riêng cho chủ đề này

Trong chức năng chính, đầu tiên, init[] được sử dụng để khởi tạo Colorama. Tiếp theo, tôi đã sử dụng một đoạn mã để thực thi lệnh HĐH để xóa màn hình, dựa trên hệ điều hành được sử dụng. Tiếp theo, mô-đun nghệ thuật được sử dụng để hiển thị ASCII dành cho tập lệnh và bên dưới đó, bạn sẽ tìm thấy thông tin liên hệ về tôi, trong trường hợp bạn muốn liên hệ với tôi

Và cuối cùng, chúng ta gọi hàm read_data_from_excel[] và
send_whatsapp_message[] thực hiện phần còn lại của
hàm, như chúng ta đã thảo luận trước đây. Và sau đó chúng tôi kết thúc tập lệnh bằng cách đóng trình điều khiển.

Đó là tất cả những gì có trong kịch bản này. Đây là mã đầy đủ

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 = '//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[]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Hãy xem qua một bản demo nhanh để xem nó hoạt động như thế nào


Tự động hóa WhatsApp Python

Đây là giao diện của tập lệnh khi nó được thực thi. Tôi có trình duyệt chrome ngay tại đây và trang web. whatsapp. trang web com được mở ngay tại đây. Bây giờ tôi sẽ quét mã QR bằng WhatsApp và WhatsApp của tôi sẽ xuất hiện trước màn hình của tôi

Sau đó, tập lệnh sẽ lần lượt tìm kiếm các liên hệ từ tất cả các liên hệ, mở cuộc trò chuyện của họ và sau đó nó sẽ tự động nhắn tin cho họ. Nếu tin nhắn có nhiều dòng, thì một tin nhắn sẽ được gửi cho mỗi dòng

Tôi hy vọng điều này đã xóa tan nghi ngờ của bạn về kịch bản này. Trong trường hợp bạn vẫn còn bất kỳ nghi ngờ nào, bạn có thể đề cập đến nó trong phần bình luận bên dưới

Tất cả mã này có thể hơi khó hiểu đối với một số bạn và bạn có thể tự hỏi liệu có cách nào dễ dàng và thay thế để tạo mã này không. Có


pywhatkit

Có một mô-đun có tên pywhatkit, chứa một phương thức cho phép bạn gửi các tin nhắn WhatsApp tùy chỉnh. Nếu các bạn muốn mình sẽ làm một blog riêng giải thích về pywhatkit cho các bạn

Bây giờ đến chủ đề cuối cùng của blog này, Ý tưởng sửa đổi và cải tiến trong blog. Tôi đã tạo tập lệnh này chỉ để giải thích cho bạn tất cả cách bạn có thể tạo tập lệnh này. Tuy nhiên, vẫn còn rất nhiều sửa đổi và cải tiến có thể được thực hiện trong tập lệnh

Ví dụ: bạn có thể thêm hệ thống thời gian cho phép bạn gửi tin nhắn WhatsApp vào một ngày và giờ cụ thể. Để làm được điều đó, bạn sẽ phải thêm một vòng lặp while trước khi gọi send_whatsapp_message. Vòng lặp sẽ kiểm tra sau mỗi phút thời gian hiện tại. Nếu nó khớp với thời gian gửi tin nhắn WhatsApp, vòng lặp sẽ bị ngắt và tin nhắn sẽ được gửi

Tương tự, bạn có thể tạo một hằng số cho thời gian chờ và hằng số đó có thể được sử dụng để tìm hiểu thời gian chờ đợi trong khi gửi tin nhắn, vì web WhatsApp có thể chặn tập lệnh python này trong một số trường hợp

Đó là tất cả trong blog này, hy vọng bạn thích blog của tôi. Nếu bạn đã đăng ký, đừng quên đăng ký kênh của tôi để xem nhiều tập lệnh tự động hóa khác mà tôi đã tạo cho Instagram và YouTube.   

Làm cách nào để gửi 500 tin nhắn cùng lúc trong WhatsApp bằng python?

Nhập tin nhắn bạn muốn gửi bên trong tin nhắn. .
Nhập danh sách các số được phân tách bằng số. .
Chạy trình tự động python. py
Khi chương trình bắt đầu, bạn sẽ thấy thông báo trong tin nhắn. .
Sau một lúc, Chrome sẽ bật lên và mở web. whatsapp. com
Quét mã QR để đăng nhập vào whatsapp

Làm cách nào tôi có thể gửi tin nhắn tới 1000 trên WhatsApp?

Sau đây là các bước đơn giản để thiết lập tính năng phát sóng. .
Truy cập Tài khoản doanh nghiệp WhatsApp của bạn
Vào Trò chuyện, bấm vào Menu và chọn Danh sách mới
Nhập/tìm kiếm tên liên hệ muốn gửi tin nhắn hàng loạt
Chọn tên của số liên lạc bằng cách nhấn vào nút +
Nhấn OK
Nhấn Tạo

Làm cách nào để gửi tin nhắn WhatsApp bằng mã Python?

Gửi tin nhắn WhatsApp bằng Python .
Gửi tin nhắn WhatsApp bằng Python. .
Thiết lập ứng dụng Meta. .
Thiết lập mẫu tin nhắn. .
Gửi tin nhắn của bạn. .
Sau đó, chúng tôi sẽ xác định URL mà chúng tôi sẽ thực hiện yêu cầu POST HTTP và các tiêu đề cho yêu cầu này
Bây giờ chúng tôi xác định các tham số mà chúng tôi sẽ điền vào tin nhắn WhatsApp của mình

Làm cách nào tôi có thể gửi 100 liên hệ trên WhatsApp?

Cách gửi tin nhắn WhatsApp tới tất cả các địa chỉ liên hệ .
Mở WhatsApp
Nhấn vào nút Menu để mở menu chính
Chọn chương trình phát sóng mới
Nhấn vào dấu cộng [+] để chọn danh bạ mà bạn muốn gửi tin nhắn hàng loạt
Nhấn vào Xong
Nhấn vào Tạo

Chủ Đề