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()