📜  Python|使用Selenium在 Facebook 上自动发布生日快乐帖子

📅  最后修改于: 2022-05-13 01:54:19.003000             🧑  作者: Mango

Python|使用Selenium在 Facebook 上自动发布生日快乐帖子

众所周知, Selenium是一种用于通过程序控制 Web 浏览器的工具。它可以在所有浏览器、操作系统中使用,它的程序是用各种编程语言编写的,即Java、 Python (所有版本)。

Selenium帮助我们自动化我们经常在笔记本电脑、PC 上执行的任何类型的任务,从使用 Facebook Messenger 发短信和 WhatsApp,每天在 Twitter 上发布推文,在 Facebook 上祝朋友“生日快乐”,谷歌搜索我们想学习的任何内容,还有更多任务。所有这些任务都可以在一个小的实现中使用selenium自动化。

安装:

  • 转到命令提示符并将其放入:
pip install selenium
  • 完成后,下载用于自动化的 Web 驱动程序。在这里,我们将使用来自 http://chromedriver.chromium.org/ 的 chromedriver

让我们学习如何在 Facebook 朋友的时间线上以帖子的形式自动祝愿生日愿望的过程。

这种自动化的整个过程可以分为以下几部分:

  • 使用用户名和密码等凭据登录 Facebook 应用程序。
  • 在今天生日的朋友的时间线上发布“生日快乐”提要。

以下是步骤:

  • 创建一个浏览器对象并使用 get()函数向我们要连接/使用的网站发送请求。
  • 找到用户名和密码输入框、登录按钮等元素,并使用 click()、send_keys() 等selenium函数单击按钮并分别输入用户名和密码。
  • 之后使用 get()函数向 /events/birthdays/ 页面发送请求。
  • 在此页面的顶部,有一张“今天的生日”卡片,其中显示了今天生日的朋友的姓名,以及一个输入文本框,用于在他们的时间轴上输入任何提要。
  • 使用这些输入文本框的 XPATH,我们将使用selenium的 send_keys()函数发送我们的提要,即“生日快乐”。
  • 关闭浏览器。

注意:在执行以下程序之前,制作一个单独的 test.txt 文件并将您的 Facebook 密码放入其中。

下面是实现:

Python3
# importing necessary classes
# from different modules
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
import time
 
chrome_options = webdriver.ChromeOptions()
 
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome("chromedriver.exe")
 
# open facebook.com using get() method
browser.get('https://www.facebook.com/')
 
# user_name or e-mail id
username = "agrawal.abhi108@gmail.com"
 
# getting password from text file
with open('test.txt', 'r') as myfile:
    password = myfile.read().replace('\n', '')
 
print("Let's Begin")
 
element = browser.find_elements_by_xpath('//*[@id ="email"]')
element[0].send_keys(username)
 
print("Username Entered")
 
element = browser.find_element_by_xpath('//*[@id ="pass"]')
element.send_keys(password)
 
print("Password Entered")
 
# logging in
log_in = browser.find_elements_by_id('loginbutton')
log_in[0].click()
 
print("Login Successful")
 
browser.get('https://www.facebook.com/events/birthdays/')
 
feed = 'Happy Birthday !'
 
element = browser.find_elements_by_xpath("//*[@class ='enter_submit\
       uiTextareaNoResize uiTextareaAutogrow uiStreamInlineTextarea\
                  inlineReplyTextArea mentionsTextarea textInput']")
 
cnt = 0
 
for el in element:
    cnt += 1
    element_id = str(el.get_attribute('id'))
    XPATH = '//*[@id ="' + element_id + '"]'
    post_field = browser.find_element_by_xpath(XPATH)
    post_field.send_keys(feed)
    post_field.send_keys(Keys.RETURN)
    print("Birthday Wish posted for friend" + str(cnt))
 
# Close the browser
browser.close()