제퍼넷 로고

Python을 사용한 Whatsapp 자동화에 대한 전체 가이드

시간

이 기사는 데이터 과학 Blogathon.

살펴보기

  • 개요
  • Python을 사용한 Whatsapp 자동화란 무엇입니까?
  • 그 기능은 무엇입니까?
  • 코딩하자!
  • 오류 및 예외
  • 처리 오류
  • 다른 방법으로 할 수 있습니까?
  • 결론

 개요

"좋은 아침입니다!"라는 메시지와 함께 PC를 켰다고 상상해 보십시오. 아무 작업 없이 자동으로 WhatsApp 연락처로 전송됩니다. 그리고 이것은 우리가 만들고자 하는 것이며 다양한 다른 기능을 가지고 있습니다.

Python을 사용한 Whatsapp 자동화란 무엇입니까?

시간을 절약하고 다른 사람의 관점에서 시간을 엄수하는 사람으로 만들어주는 유틸리티이자 야수 소프트웨어입니다. 기본적으로 WhatsApp 웹을 자동화하고 메시지를 보냅니다.

그 기능은 무엇입니까?

그래서 역으로 이해하고 그 기능이 무엇인지 완전히 이해합시다

당신은 PC를 켰다.

  • 이 프로그램은 자동으로 실행됩니다
  • PC에 로드되지 않도록 2분 동안 기다리십시오(PC가 안티바이러스 프로그램처럼 시작될 때 많은 프로그램이 동시에 실행되고 PC를 느리게 하는 더 많은 프로그램이 실행되고 이 프로그램은 PC를 로드하지 않을 때까지 기다립니다)
  • 파일(프로그램의 데이터베이스) 확인
  • 존재하지 않는 경우,
  • 파일을 만들고 메시지를 보낸 다음 파일을 업데이트합니다.
  • 존재한다면,
  • 그런 다음 마지막 날짜(데이터베이스에 보낸 메시지 날짜가 있음)가 다른 연도인지 확인하고 그렇다면 파일의 모든 내용을 삭제하고(사용한 공간을 확보하기 위해) 다음을 보냅니다. 메시지가 표시되고 현재 날짜가 파일로 다시 업데이트됩니다.
  • 그리고 마지막 날짜의 연도가 현재 연도와 같으면 바로 앞으로 이동합니다.
  • 파일의 마지막 날짜가 현재 날짜가 아니면 메시지를 보내고 데이터베이스를 업데이트합니다.
  • 그리고 파일의 마지막 날짜가 현재 날짜이면 작년 날짜만 확인하고 프로그램을 닫습니다.
  • 메시지 전송에 문제가 있는 경우 데이터베이스를 업데이트하지 않고 사용자에게 메시지 전송에 문제가 있음을 알립니다.
왓츠앱 자동화
Whatsapp 로고

코딩하자!

우리 프로그램이 할 모든 일을 알고 있기 때문입니다. 이제 우리는 프로그램을 만들기 시작할 것입니다.

우선, 프로그램 작업에 필요한 모듈/라이브러리를 다운로드해야 합니다.

그리고 모듈은 "time", "datetime", "selenium", "os", "plyer"입니다.

이 모든 모듈 중에서 Selenium과 plyer 모듈만 다운로드하면 되며 나머지 모듈은 python과 함께 사전 설치됩니다.

따라서 이 명령을 사용하면 이러한 모든 모듈을 다운로드하고 설치할 수 있습니다.

pip 설치 셀레늄 플라이어

이제 모듈을 설치했으며 이제 프로그램으로 가져와 사용할 수 있습니다. 그리고 아래에서 코딩을 시작하겠습니다.

시간 가져오기 time.sleep(120) 셀레늄에서 날짜시간 가져오기 selenium.webdriver.chrome.options에서 웹드라이버 가져오기 selenium.webdriver.common.keys에서 옵션 가져오기 키 가져오기 OS에서 플라이어 가져오기 알림

PC 시작 시 프로그램이 자동으로 시작되도록 하므로 PC에 로드되지 않도록 프로그램을 2분 동안 잠자기 상태로 만듭니다(에서 설명했듯이 기능 섹션은 무엇입니까 ). 프로그램의 첫 번째 줄에서 time 모듈을 가져온 다음 두 번째 줄에서 프로그램을 잠자기 상태로 만들었습니다. 그리고 한 줄씩 세 번째 줄, datetime 모듈, 네 번째 줄 webdriver 클래스에서 selenium과 다음 줄 옵션에서 셀레늄에서, 다음 줄에서 다시 셀레늄에서 키와 같은 모든 모듈을 가져오고 그 후에 os 모듈을 가져왔습니다. 마지막으로 plyer에서 알림을 가져왔습니다. 파이썬 프로그램을 사용한 무한 타이머 ).

아래는 why 우리는 이 모든 모듈을 수입하고 있습니다

  1. 시간 – 주로 프로그램을 잠자기 상태로 만드는 데 사용
  2. datetime – 날짜 및 연도 작업(데이터베이스 업데이트)
  3. webdriver – 브라우저 및 웹사이트와 연동하는 데 사용됩니다.
  4. 옵션 – 사용할 확장 및 사용할 사용자 계정과 같은 인수를 브라우저에 추가하고 창 등을 최대화하는 데 사용됩니다.
  5. 키 – 키보드의 키 또는 Ctrl+A 및 Ctrl+C 또는 Enter와 같은 단축키로 작업하는 데 사용됩니다.
  6. os – 프로그램 종료
  7. 알림 - 알림용(메시지 전송 중 오류가 발생한 경우 기능 섹션은 무엇입니까 )

참고: 편의에 따라 수면 시간을 조정할 수 있습니다. PC가 항상 WIFI 또는 이더넷에 연결되어 있으면 절전 시간을 줄일 수 있거나 PC가 충분히 빠르면 PC 대 PC에 따라 절전 시간을 줄일 수도 있습니다.

이제 메인 메신저() 함수가 여기에서 시작됩니다.

def 메신저(): 시도: url ="https://web.whatsapp.com/send?phone=+91xxxxxxxxxx" message_content = "좋은 아침입니다!" 경로 = r"" 옵션 = webdriver.ChromeOptions() options.add_argument("user-data-dir=") 드라이버 = webdriver.Chrome(executable_path=경로, 옵션=옵션) driver.minimize_window() driver.get(url) time.sleep(20) type_it = driver.find_elements_by_class_name('_13NKt') time.sleep(20) 시도: type_it[1].send_keys(message_content + Keys.ENTER) e: type_it = driver.find_elements_by_class_name('_13 ') type_it[1].send_keys(message_content + Keys.ENTER) print(e) time.sleep(10) driver.quit() 예외 e: notification.notify(title = "Whatsapp 메시지가 전송되지 않음", 메시지 = "전송 중 오류 발생!", app_icon = r"", app_name = "Whatsapp 메시지 오류", 토스트 = True, ) print(e) os._exit(0)

위 코드의 첫 번째 줄에서 Messenger() 함수를 정의했습니다. 자동화 프로세스에서 일부 오류(예: 인터넷 문제 또는 기타 문제)가 있을 수 있습니다. 따라서 우리는 프로그램을 오류 없이 만들기 위해 try-except 블록을 사용할 것입니다.

따라서 두 번째 줄에서 try 메서드를 사용해야 합니다. 다음 줄에서 Whatsapp 웹( URL에는 메시지를 보내려는 사람의 전화번호가 포함됩니다. ). 그리고 다음 줄에는 보낼 메시지가 포함될 변수 message_content가 있습니다. 다음 줄에는 크롬 드라이버의 경로가 포함될 경로 변수가 포함됩니다. (참고: 문자열 뒤에 있는 'r'(r은 원시 문자열에 사용됨) 문자열은 이스케이프 문자를 이스케이프하지 않는 데 사용됩니다. 예를 들어 '/n'은 새 줄을 가져오는 데 사용되며 인쇄하려는 경우에는 그렇지 않습니다. 인쇄되면 새 행만 인쇄됩니다. 인쇄하려면 '//n' 또는 r'/n'을 사용할 수 있으며 둘 다 '/n' 문자를 인쇄합니다. 그리고 'C:/'와 같은 경로에서 users', '/'는 문제를 일으킬 수 있으므로 raw string )에 사용합니다. 처리 섹션의 경로에 대해 자세히 알아보십시오. 

팁: QR 코드를 스캔하지 않고 WhatsApp 웹을 사용할 수 없습니다. QR을 최소 1회 스캔한 후 확인하면 로그인한 편지함 유지, QR을 다시 스캔하지 않고 사이트를 직접 방문할 수 있습니다. WhatsApp에 로그인하지 않은 브라우저의 다른 프로필을 사용하는 경우 QR을 다시 스캔해야 합니다. 그러나 할 수 있는 일은 WhatsApp의 베타 모드에 참여하는 것뿐이며 메시지를 보내는 데 문제가 없습니다. 이 처리 오류 섹션에 대해 자세히 알아보세요.

다음 줄에는 ChromeOptions()를 포함할 변수 '옵션'이 있습니다. 브라우저에서 프로필, 확장, 쿠키 또는 프록시 및 이와 유사한 작업을 수행하는 데만 사용됩니다. 다음 줄에는 WhatsApp이 로그인한 프로필이 포함된 인수가 추가되었습니다. 다음 줄에는 위에서 지정한 대로 chromedriver를 사용하여 Chrome을 초기화하고 프로필 옵션을 인수로 사용하는 드라이버 변수가 사용됩니다. .

다음 줄에서는 백그라운드 타입으로만 작업할 수 있도록 화면을 최소화했습니다.
다음으로 브라우저에서 URL을 가져올 드라이버 변수가 있습니다. 이제 프로그램을 20초 동안 잠자기 상태로 만듭니다. 사이트의 요소에 액세스할 때 오류가 발생하지 않도록. 다음 줄에는 요소의 주어진 클래스 이름의 요소 목록을 포함하는 변수 type_it이 있습니다. 참고: 이 글을 읽는 동안 클래스가 변경되었을 수 있으므로 입력 상자의 클래스 이름을 찾은 다음 사용하십시오. 다시 프로그램을 20초 동안 잠자기 상태로 만듭니다. 그런 다음 목록에서 두 번째 요소를 사용하여 메시지를 보내고 Keys.ENTER를 사용하여 이전에 가져온 키를 사용하여 메시지를 보냅니다. 때때로 요소에 액세스할 수 없고 예외가 발생하기 때문에 try 및 except를 사용합니다. 색인 오류. 그리고 문제가 발생하면 다시 시도한 다음 보내드리겠습니다. 그 후, 우리 프로그램이 우리 프로그램에서 보내졌기 때문에 우리 프로그램을 잠자기 상태로 만들 것입니다. 그러나 드라이버를 종료하기 위해 즉시 quit 메소드를 사용하기 때문에 때때로 그것을 보내지 않습니다.

그리고 전송 중에 오류가 발생하면 사용자에게 알림을 보냅니다. 이를 위해서는 plyer 모듈에서 가져온 알림의 알림 기능을 사용해야 합니다. 파이썬을 사용하여 무한 타이머에서 한 것처럼 사용자에게 바탕 화면 알림을 보냅니다. 여기에서 수행되는 작업에 대해 자세히 알아보려면 다음과 같은 다른 문서를 참조하십시오. 파이썬을 사용한 무한 타이머. 마지막으로 오류가 발생했을 때 지금은 작업을 수행할 필요가 없으므로 프로그램을 종료합니다. 그래서 우리는 '0'과 함께 os 모듈의 _exit(0) 함수를 사용하여 시스템에 프로그램의 모든 것이 괜찮다고 말할 것입니다.

이제 데이터베이스 섹션에서만 작업해야 합니다.

오늘 = str(datetime.date.today()) 오늘_2 = f"{오늘} " 내용 = 바이트(today_2,'utf-8') year_str = str(datetime.datetime.now().year) year_edit = bytes( year_str,'utf-8').decode('utf-8') date_str = str(datetime.datetime.now().day) date_edit = bytes(date_str,'utf-8').decode('utf-8 ') 편집 = {"1":"01", "2":"02", "2":"03", "4":"04", "5":"05", "6":" 06", "7":"07", "8":"08", "9":"09",} print(date_edit) 시도: 파일 = open("database.txt", "x") 메신저( ) file.write(today_2) file.close() 예외 e: file = open("database.txt", "a+b") try: try: file.seek(-11,2) # 검색은 수행되지 않습니다. 텍스트 모드에서 음수로 작동, OSError를 e로 제외하고 바이트 모드에서만 작동: print(e) Messenger() file.write(content) file.close() os._exit(0) year = file.read(10).decode ('utf-8') file.seek(-11,2) 날짜 = file.read(10).decode('utf-8') if year_edit != year[:4]: file.close() 파일 = open("database.txt", "wb") file.close() file = open("database.txt", "a+b") Messenger() file.write(content) file.close() for x in edit.keys(): 만약x == date_edit: date_edit = edit.get(x) break if date_edit != date[8:14]: 메신저() file.write(content) file.close() os._exit(0) 예외 e: 인쇄(e)

이제 중요한 것은 datetime 모듈을 사용하여 날짜, 연도 등을 모두 가져올 것입니다. datetime 객체는 'str'(파이썬의 문자열)이 아닌 'datetime' 유형이므로 파일에 쓰는 데 오류가 발생합니다. 그래서 우리는 그것을 'str'로 변환해야 하며 또한 바이트 모드에서 파일을 읽고 쓰기 위해 이 모든 것을 바이트로 변환해야 합니다. 그러나 우리 프로그램에서 datetime 모듈의 버그 중 하나는 datetime 모듈에 따라 2022-01-01이 2022-1-1이 되는 날짜와 같이 날짜가 될 수 있습니다. 이제 데이터베이스의 마지막 날짜를 확인하여 해당 날짜에 메시지가 전송되었는지 여부를 확인하면 둘 다 다르기 때문에 잘못된 응답을 받게 됩니다. 따라서 우리는 숫자 사전(기술적으로 문자열)을 필요한 숫자(Again 문자열)의 사전으로 만들어 이 버그를 수정할 것입니다.

말했듯이 기능 섹션은 무엇입니까?
해당 디렉토리에 데이터베이스 파일이 없으면 직접 파일을 생성하고 메신저() 함수를 호출하여 메시지를 보낸 다음 현재 날짜를 데이터베이스에 업데이트합니다. 그리고 파일을 닫으면 프로그램이 종료됩니다.
참고: 때때로 파일이 저장되지 않고 작업이 완료되지 않기 때문에 파일을 연 후에는 반드시 닫아야 합니다.

그리고 디렉토리에 이미 데이터베이스가 있는 것과 같은 오류가 발생하면 예외 블록으로 직접 들어가 "a+b"와 같은 바이트 단위로 읽기 + 쓰기 모드로 파일을 엽니다.

이제 파일이 비어 있으면 아무 곳에서나 파일 포인터를 찾으면 OSError가 발생하고 메신저() 함수가 호출되고 'b' 또는 바이트로 열었을 때 바이트 단위의 내용으로 데이터베이스를 업데이트합니다. 그런 다음 파일이 닫히고 프로그램이 종료됩니다.
그리고 파일에 내용이 있으면 연도를 읽고 'utf-8'인 일반 인코딩으로 디코딩한 다음 파일의 특정 날짜를 읽을 수 있는 위치에 대한 파일 포인터를 찾고 다시 그것을 해독.

먼저 파일의 연도가 현재 연도가 아닌지 확인한 다음 '바이트 모드에서 추가 및 읽기'로 열린 파일을 닫은 다음 쓰기 및 바이트 모드로 엽니다(모든 내용이 지워집니다. 파일 ). 그런 다음 파일에서 모든 내용이 삭제되어 파일을 닫고 다시 'a+b' 모드에서 파일을 열고 메신저() 함수를 호출한 다음 현재 날짜로 파일을 업데이트한 다음 닫습니다. . 그리고 지금은 프로그램이 종료되었습니다.

위에서 해결한 버그가 사용되며 for 루프를 사용하여 사전 키를 사용하여 date_edit 변수의 내용을 변경합니다.

마지막으로 파일의 날짜가 현재 날짜와 다른지 확인하고 간단히 메신저() 함수를 호출하여 파일을 업데이트하고 닫습니다.
그리고 프로그램을 실행하는 동안 오류가 발생하면 간단히 처리하고 문제를 인쇄합니다.

오류 및 예외

WhatsApp이 로드되지 않거나 QR을 요청하면 오류가 발생합니다.
또는 chromedriver가 크롬 버전과 다른 버전입니다.

예외 처리

Whatsapp 베타에 가입하여 QR 오류를 관리할 수 있습니다. WhatsApp의 베타 모드에 참여하려면 다음을 읽을 수 있습니다. 기사

크롬드라이버

개발자용 크롬을 처리하고 테스트하는 데만 사용됩니다.
우선, 크롬 버전을 확인하고 구글에서 해당 버전의 크롬 드라이버를 찾은 다음 다운로드하면 모든 작업이 완료됩니다.

팁: 이 프로그램이 실행 중이거나 프로그램이 충돌할 때 WHATSAPP 웹 프로필을 사용할 수 없습니다. 따라서 프로그램의 수면 시간을 적절하게 변경할 수 있습니다.

다른 방법으로 할 수 있습니까?

예, 하지만 아닙니다! 수동으로 만든 이 소프트웨어는 다양한 모듈로 대체할 수 있습니다. 그러나 그 모든 모듈은 같은 종류의 코드를 갖거나 우리와 다를 수 있지만 사용할 수는 있습니다. 우리가 국수를 사서 요리 한 것처럼 그들 또는 생면을 직접 만든 다음 요리할 수 있습니다. 두 경우 모두 면을 삶았지만 사서 요리하면 번거롭지 않지만 생면에 풍미를 더할 수 없는 반면에 면을 직접 만드는 데는 시간이 걸리고 번거롭기도 하지만 생면으로 원하는 것을 할 수 있으므로 할 가치가 있습니다. 따라서 이에 대한 많은 대안이 있으며 그 중 하나가 pywhatkit입니다. 또한 매우 가볍고 사용하기 쉬우며 연습할 가치가 있는 환상적인 모듈입니다. 나는 확실히 미래에 이것에 대한 기사를 만들려고 노력할 것입니다.

결론

우후! 자체 데이터베이스를 사용하여 자신만의 야수 WhatsApp 자동화 소프트웨어를 만들었습니다.

이제 파이썬의 단순함을 완전히 즐기려면 직접 시도해야 합니다.

이 프로그램의 특정 출력은 없지만 전송된 메시지의 이미지입니다.

보낸 메시지의 스냅샷

소개

아툴리아 카트리, 파이썬 괴짜. 저는 다른 프로그래밍 언어를 배우고, 다른 라이브러리를 시도하고, 다양한 프로그래밍 종류를 만드는 것을 좋아합니다.

내 다른 기사는 다음과 같습니다-

파이썬을 사용하는 Gui 계산기

파이썬을 사용하는 비밀번호 생성기에 대한 초보자 가이드

파이썬을 사용하여 무한 타이머 만들기

Python을 사용하는 Youtube 비디오 다운로더

내 Github: https://github.com/atulyakhatri

Github의 이 프로그램: https://github.com/atulyakhatri/daily_hacks/blob/main/date_updater.py

이 페이지의 이미지.

1st : 님이 촬영 한 사진 알렉산더 샤토 프 on Unsplash

2위: 작가별 사진

이것이 필요하다고 생각하는 모든 친구들과 이것을 공유하십시오.

이와 관련하여 의심스러운 점이 있으면 의견 섹션에서 질문하거나 Github에서 이 리포지토리를 포크할 수 있습니다.

즐거운 코딩하세요 :)

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?