Как проверить номер на наличие whatsapp python?
Хочу узнать, зарегистрирован ли номер на whatsapp через python, но не могу понять, как можно такое реализовать без API, т.к оно платно. Дается, конечно, на тест 3 дня.
Ответы (1 шт):
Смотри, я делал через селениум, но помню насколько код работоспособен, но там буквально минимальные изменения могут поправить его)
P.S Я не профессионал, не судите код строго, это вообще мой первый Python проект. Делал собирая по кусочкам гайды и документации к библиотекам, если кто-то готов поправить, сделать его более работоспособным и скинуть сюда буду очень рад. Так же можем развивать эту идею вместе)
Main.py
# Импорт библиотек
import random # Рандом
import time # Работа с временем
import selenium.common.exceptions
from messages import message_list
from messages import read_mess_file
from messages import change_message_list
from import_numbers_from_excel import whatsapp_urls
from import_numbers_from_excel import read_numbers_from_excel
from selenium import webdriver # Библиотека браузера и действий с ним
from selenium.webdriver.common.by import By # Для интеграции нужного эллемента
from selenium.webdriver.common.keys import Keys # Клавиатура и работа с ней
from selenium.webdriver.support import expected_conditions as EC # Для поиска элемента
from selenium.webdriver.support.ui import WebDriverWait # Задержка загрузки страницы
path = 'database.xlsx'
driver = webdriver.Chrome()
driver.maximize_window()
def whatsapp_base():
read_numbers_from_excel(path)
def scan_qr(i, whatsapp_url):
if i == 0:
print("Сканируй QR-code в браузере")
time.sleep(3)
driver.implicitly_wait(10)
driver.get(whatsapp_url)
else:
driver.get(whatsapp_url)
driver.implicitly_wait(10)
def browse_work():
read_mess_file()
change_message_list()
whatsapp_base()
length = len(whatsapp_urls) - 1
for i in range(length):
whatsapp_url = whatsapp_urls[i]
try:
scan_qr(i, whatsapp_url)
incorrect_number = driver.find_element_by_xpath('//*[@id="app"]/div[1]/span[2]'
'/div[1]/span/div[1]/div/div/div/div/div[2]/div')
incorrect_number.click()
print('Сообщение контату -', whatsapp_url, 'не доставлено')
except selenium.common.exceptions.NoSuchElementException:
input_msg = WebDriverWait(driver, 10).until(
EC.presence_of_element_located(
(By.XPATH, '//*[@id="main"]/footer/div[1]/div[2]/div/div[1]/div/div[2]')))
driver.implicitly_wait(5)
for x in range(len(message_list)):
input_msg.send_keys(message_list[x] + Keys.ENTER)
rand = random.randint(5, 10)
time.sleep(rand)
print('Контату -', whatsapp_url, 'доставлены сообщения')
browse_work()
Messages.py # Messages work(add, remove, see, change)
from openpyxl import load_workbook
message_list = []
path = 'messages.xlsx'
def add_message(how):
"""Добавление элемента(ов) из массива"""
global message_list
for i in range(how):
print('Введите сообщение которое хотите добавить:')
message = input()
message_list.append(message)
def change_message(how):
"""Изменение элемента(ов) из массива"""
global message_list
for a in range(how):
print('Какое сообщение следует изменить:')
change = int(input())
print('Введите сообщение на которое следует поменять:')
change_mess = input()
message_list[change] = change_mess
def del_message(how):
"""Удаление элемента(ов) из массива"""
global message_list
for x in range(how):
print('Какие сообщения хотите удалить?')
delete = int(input())
del message_list[delete]
def see_messages():
"""Вощваращает построчно все элементы массива message_list"""
global message_list
for z in range(len(message_list)):
print(message_list[z])
def read_mess_file():
"""Читает сообщения из excel файла и добавляет их в массив"""
global message_list
workbook = load_workbook(filename=path)
active_file = workbook.active
max_row = active_file.max_row
for row in range(1, max_row):
message = active_file[row][0].value
message_list.append(message)
def change_message_list():
"""Обрабатывает запроос пользователя и позволяет ему при помощи команд
изменять, добавлять, удалять и просматривать списки соощений.
Парамтры для изменения:
add,a - Добавление элемента(ов) в список
del,d - Удаление элемента(ов) из списка
see,s - Возвращает все элементы массива
change, c - Замена элемента(ов) массива
exit, e - выход из программы изменения"""
changes = True
while changes:
answer = input('\nКоманды для работы с сообщениями\nadd - Добавить сообщение\ndel - Удалить сообщение\n'
'see - посмотреть список сообщений\nchange - Изменить сообщение\n'
'exit - выйти из редактирования списка\n')
if answer == 'add' or answer == 'a':
print('Сколько?')
count_add = int(input())
add_message(count_add)
elif answer == 'del' or answer == 'd':
print('Сколько?')
how_del = int(input())
del_message(how_del)
elif answer == 'see' or answer == 's':
see_messages()
elif answer == 'change' or answer == 'c':
print('Сколько?')
how_change = int(input())
change_message(how_change)
elif answer == 'exit' or answer == 'e':
changes = False
else:
print('\nКоманда не распознана, список команд:\nadd, a\ndel, d\nsee, s\nchange, c\nexit, e\n')
ImportNumsFromExcel.py #Import numbers from excel to whatsapp urls
from openpyxl import load_workbook
numbers_list = []
whatsapp_urls = []
count_numbers = 0
def read_workbook(path):
"""Читаем Excel файл с сообщеиями и формируем массив. Если
номера в нём нет, то добавляем, если есть то выводим ошибку"""
global numbers_list
workbook = load_workbook(filename=path)
active_file = workbook.active
max_row = active_file.max_row + 1
for row in range(1, max_row):
if row >= 2:
number = active_file[row][0].value
if number in numbers_list:
print('Номер:', number, 'уже есть в списке')
else:
numbers_list.append(number)
def import_dict_to_urls():
"""Используем массив для создания Whatsapp ссылок для рассылки"""
for count in range(len(numbers_list)):
number_for_url = numbers_list[count]
whatsapp_url = "https://web.whatsapp.com/send?phone=" + str(number_for_url)
whatsapp_urls.append(whatsapp_url)
def print_urls():
"""Выводит все эллементы списка"""
for i in range(len(whatsapp_urls)):
print(whatsapp_urls[i])
def read_numbers_from_excel(path):
"""Открытие чтение и конвертирование номеров в список"""
global whatsapp_urls
read_workbook(path)
import_dict_to_urls()
return whatsapp_urls