أعتقد أن الكثير من الناس يحبون التعرف على وسائل التواصل الاجتماعي. الشبكات واستخدام التطبيقات (على سبيل المثال Tinder) ،ولكن غالبًا ما يستغرق الأمر الكثير من الوقت لإبداء الإعجاب وإرسالالرسائل الأولى . أعتقد أن هذه إجراءات رتيبة تصد فقطالتواصل والتعارف. إذا كنت مبرمجًا ، فلماذا تكون مثل أي شخص آخر ، فلنقمبأتمتة عملية الأفعال الرتيبة ونترك اهتمامنا فقطللتواصل اللطيف ، ولكن حول كل شيء بالترتيب.تدريب
في هذه المقالة ، سأستخدم متصفح Chrome .
- قم بإنشاء مجلد باستخدام مشروع bot_tinder .
- bot_tinder chromedriver_for_win chromedriver_for_mac, chromedriver_for_lin (.. 3 Windows, macOS, Linux).
- webdriver ( Chrome, Firefox ), .
- chromedriver_for_win, chromedriver_for_mac, chromedriver_for_lin.
, , .. .
- في مجلد bot_tinder ، قم بإنشاء ملف يسمى log.txt (نكتب رقم الهاتف الذي سيذهب إليه على Tinder). الشكل بدون رقم ثمانية: 9851234567
- في مجلد bot_tinder ، قم بإنشاء ملفات tinder.py ، function.py .
ونتيجة لذلك ، يجب أن يكون لديك ما يلي:
يجب أن يحتوي كل مجلد على ملف webdriver الذي تم تنزيله مسبقًا.إذا قمت بتطبيقه فقط لنظام التشغيل الخاص بك ، فيجب وضع ملف webdriver في أحد المجلدات فقط باسم نظام التشغيل الخاص بك "chromedriver_for_your OS " .
التنفيذ
في ملف tinder.py ، استورد المكتبة:
from selenium import webdriver
في ملف function.py ، استورد المكتبات:from selenium.common.exceptions import NoSuchElementException, ElementNotInteractableException
from sys import platform
from time import sleep
import datetime
بعد ذلك ، في ملف function.py ، ننشئ المتغيرات التي سنحتاجها لاحقًا:error = ''
warning = ''
ok = ''
oc = ''
like = ''
all_sleep = 3
like_sleep = 2
تم حذف الرموز من قبل مترجم Habr ، ولكن يجب أن تكون على النحو التالي:
يمكنك نسخ الرموز من الموقع أو استخدام مكتبة الرموز التعبيرية .تشير المتغيرات all_sleep ، مثل like_sleep إلى وقت التأخير بالثواني.بعد إنشاء الوظائف في ملف function.py :
ستحدد الوظيفة الأولى التاريخ والوقت:
def get_data_time():
time_now = datetime.datetime.now()
return time_now.strftime("%d-%m-%Y %H:%M")
- ستحدد الوظيفة الثانية نظام التشغيل لديك وستصل إلى برنامج تشغيل الويب المطلوب :
def get_OC():
"""
Define OS.
:return: OS information and path to chromedriver.exe
"""
if platform == "linux" or platform == "linux2":
time_now = datetime.datetime.now()
information = "[" + get_data_time() + '] {} Linux'.format(oc)
put = "chromedriver_for_lin/** webdriver**"
return information, put
elif platform == "darwin":
time_now = datetime.datetime.now()
information = "[" + get_data_time() + '] {} Mac'.format(oc)
put = "chromedriver_for_mac/** webdriver**"
return information, put
elif platform == "win32":
time_now = datetime.datetime.now()
information = "[" + get_data_time() + '] {} Windows'.format(oc)
put = "chromedriver_for_win/chromedriver.exe"
return information, put
تذكر أن يكتب الطريق إلى webdriver في وضع متغير .
- الوظيفة الثالثة ستقرأ رقم الهاتف من ملف log.txt :
def information_from_txt_files():
"""
Read the .txt files
:return: Information. Login.
"""
information = ''
with open('log.txt', 'r') as file:
log = file.read()
information += "[" + get_data_time() + \
'] {} Tinder: {}'.format(ok, log)
return information, log
- الوظيفة الرابعة ستغلق النافذة المنبثقة على موقع Tinder الإلكتروني:
def close_start_popups(browser):
"""
Close the popup.
:param browser: parameter of the running browser.
:return: information.
"""
sleep(all_sleep)
try:
browser.find_element_by_xpath('//button[@aria-label=""]').click()
return "[" + get_data_time() + "] {} .".format(ok)
except ElementNotInteractableException as err:
return "[" + get_data_time() + '] {} ' + err + ''.format(error)
except NoSuchElementException as err:
return "[" + get_data_time() + '] {} .'.format(error)
- الوظيفة الخامسة ستضغط على زر "تسجيل الدخول باستخدام رقم الهاتف" :
def log_in_using_your_phone(browser):
"""
Click the Login button using the phone number.
:param browser: parameter of the running browser.
:return: information
"""
sleep(all_sleep)
try:
browser.find_element_by_xpath('//div[@id="modal-manager"]').find_element_by_xpath('//button[@aria-label=" "]').click()
return "[" + get_data_time() + "] {} .".format(ok)
except ElementNotInteractableException as err:
return "[" + get_data_time() + '] {} ' + err + ''.format(error)
except NoSuchElementException as err:
browser.find_element_by_xpath('//button[text()=" "]').click()
return log_in_using_your_phone(browser)
- الوظيفة السادسة ستدخل رقم الهاتف:
def input_number_phone(browser, log):
"""
Enter the phone number.
:param browser: parameter of the running browser.
:param log: phone number.
:return: information.
"""
sleep(all_sleep)
try:
browser.find_element_by_name('phone_number').send_keys(log)
return "[" + get_data_time() + '] {} {}'.format(ok, log)
except NoSuchElementException:
return "[" + get_data_time() + '] {} .'.format(error)
- الوظيفة السابعة تضغط على زر المتابعة :
def go_on(browser):
"""
Click the Continue button.
:param browser: parameter of the running browser.
:return: information
"""
sleep(all_sleep)
try:
browser.find_element_by_xpath('//span[text()=""]').click()
return "[" + get_data_time() + '] {} '.format(ok)
except NoSuchElementException:
return "[" + get_data_time() + '] {} .'.format(error)
- تطلب منك الوظيفة الثامنة إدخال الرمز الذي سيأتي إلى هاتفك:
def code_check():
"""
Entering a code and checking the entered code.
:return: entered code
"""
kod_numbers = input("[" + get_data_time() + "] {} : ".format(warning))
if len(kod_numbers) != 6:
print("[" + get_data_time() + '] {} .'.format(error))
return code_check()
else:
print("[" + get_data_time() + '] {} .'.format(ok))
return kod_numbers
تتحقق الوظيفة أيضًا من عدد الأرقام المدخلة.
- تدخل الوظيفة التاسعة الرمز:
def input_cod(browser):
"""
Code entry.
:param browser: parameter of the running browser.
:return: information.
"""
try:
kod_numbers = code_check()
kod = browser.find_elements_by_xpath('//input[@type="tel"]')
n = 0
for i in kod:
i.send_keys(kod_numbers[n])
n += 1
return "[" + get_data_time() + '] {} .'.format(ok)
except NoSuchElementException:
return "[" + get_data_time() + '] {} .'.format(error)
- تسمح الوظيفة العاشرة بتعريف الموقع الجغرافي:
def geolocation_ok(browser):
"""
We allow geolocation.
:param browser: parameter of the running browser.
:return: information.
"""
sleep(all_sleep)
try:
browser_button = browser.find_elements_by_tag_name("button")
button_list = {i.text: i for i in browser_button}
if "" in button_list.keys():
button = [value for key, value in button_list.items() if key == ""]
button[0].click()
return "[" + get_data_time() + '] {} .'.format(ok)
else:
return "[" + get_data_time() + '] {} .'.format(error)
except NoSuchElementException:
return "[" + get_data_time() + '] {} .'.format(error)
- تقوم الوظيفة الحادية عشرة بإيقاف التنبيه:
def notice_off(browser):
"""
Turn off notifications.
:param browser: parameter of the running browser.
:return: information.
"""
sleep(all_sleep)
try:
browser_button = browser.find_elements_by_tag_name("button")
button_list = {i.text: i for i in browser_button}
if "" in button_list.keys():
button = [value for key, value in button_list.items() if key == ""]
button[0].click()
return "[" + get_data_time() + '] {} .'.format(ok)
else:
return "[" + get_data_time() + '] {} .'.format(error)
except NoSuchElementException:
return "[" + get_data_time() + '] {} .'.format(error)
- تغلق الوظيفة الثانية عشرة النوافذ المنبثقة:
def popup_windows_off(browser):
"""
Close popups.
:param browser: parameter of the running browser
:return: information
"""
sleep(like_sleep)
try:
browser_button = browser.find_elements_by_tag_name("button")
button_list = {i.text: i for i in browser_button}
if "" in button_list.keys():
button = [value for key, value in button_list.items() if key == ""]
button[0].click()
print("[" + get_data_time() + '] {} .'.format(ok))
except NoSuchElementException:
pass
- الوظيفة الثالثة عشرة:
def click_like(browser):
"""
Click LIKE.
:param browser: parameter of the running browser
:return: information
"""
sum_like = 0
while True:
try:
popup_windows_off(browser)
browser.find_element_by_xpath('//button[@aria-label=""]').click()
sum_like += 1
print("[" + get_data_time() + '] {} - {}'.format(like, str(sum_like)))
except NoSuchElementException:
print("[" + get_data_time() + '] {} .'.format(error))
انتقل الآن إلى ملف tinder.py وسجل استيراد جميع الوظائف:from function import get_OC, information_from_txt_files, close_start_popups, notice_off, click_like, log_in_using_your_phone, input_number_phone, go_on, input_cod, geolocation_ok
تحديد نظام التشغيل:
info, put = get_OC()
print(info)
ضبط خيارات المتصفح:
chromedriver = put
options = webdriver.ChromeOptions()
options.add_argument('--start-minimize')
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)
إذا كنت تعمل مع Firefox ، فقم بقراءة كيفية العمل باستخدام مكتبة selenium.webdriver .
يتم تشغيل المتصفح والانتقال إلى صفحة Tinder:
browser.get('https://tinder.com/app/recs')
نبدأ الآن في استخدام الوظائف المعدة مسبقًا:
info_txt, log = information_from_txt_files()
print(info_txt)
print(close_start_popups(browser))
print(log_in_using_your_phone(browser))
print(input_number_phone(browser, log))
print(go_on(browser))
print(input_cod(browser))
print(go_on(browser))
print(geolocation_ok(browser))
print(notice_off(browser))
click_like(browser)
استنتاج
في النهاية ، احصل على روبوت يذهب إلى موقع Tinder وينقر على Like.عليك فقط الدخول في التطبيق في غضون بضع ساعات والبدء في التحدث معالتعاطف المتبادل بالفعل .الأتمتة هي جهد الرجال لتبسيط العمل حتى تتمكن النساء من القيام بذلك.
في المقالة التالية ، سننفذ القدرة على إرسال رسائل للإعجاب المتبادل.