使用 python 实现 Facebook 帐户下载自动化?

Facebook account download automation with python?

作为我工作职责中的一项常规任务,我经常需要从用户帐户中下载完整的 Facebook 帐户。如果可以的话,我正在努力改进我的工作流程并实现自动化。

我已经尝试在网站上搜索这个主题,虽然很多都涵盖了登录部分,但我还没有找到处理 Facebook 弹出窗口 windows 的问题。如果我错了,我深表歉意,请相应地修改 post。

作为起点,我决定开始学习 python 并在 selenium 和 Chrome Driver 的帮助下使用它来编写流程脚本。我已经设法编写代码来登录并导航到正确的页面,然后单击初始 link 'download a copy'。然而,我正在努力让脚本找到并单击弹出窗口 window 中的 'Start My Archive' 按钮。

这是我到目前为止使用的代码,包括我尝试在底部注释掉的几个替代代码块:

import time

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

#Global Variables
target = "john.doe.7"
username = "john@doe.com"
password = "Password"
sleep = 5

#Finds and locates the ChromeDriver
driver = webdriver.Chrome("C:\Python35-32\ChromeDriver\chromedriver.exe")

#Set Chrome Options
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)

#Directs browser to webpage
driver.get('http://www.facebook.com');

#code block to log in user
def logmein():
    search_box = driver.find_element_by_name('email')
    search_box.send_keys(username)
    search_box = driver.find_element_by_name('pass')
    search_box.send_keys(password)
    search_box.submit()

#code to go to specific URL
def GoToURL(URL):
    time.sleep(sleep) # Let the user actually see something!
    driver.get(URL);    

logmein()

GoToURL('https://www.facebook.com/'+'settings')

link = driver.find_element_by_link_text('Download a copy')
link.click()

#driver.find_element_by.xpath("//button[contains(., 'Start My Archive')]").click()

#driver.find_element_by_css_selector('button._42ft._42fu.selected._42gz._42gy').click()

#driver.find_element_by_xpath("//*[contains(text(), 'Start My Archive')]").click()

#driver.find_element_by_css_selector('button._42ft._42fu.layerConfirm.uiOverlayButton.selected._42g-._42gy').click()

#from selenium.webdriver.common.action_chains.ActionChains import driver

#buttons = driver.find_elements_by_xpath("//title[contains(text(),'Start My Archive')]")
#actions = ActionChains(self.driver)
#time.sleep(2)
#actions.click(button)
#actions.perform()

只需将其添加到您的代码中,运行 是否可以正常工作。始终使用 CssSelector。

看我 运行 下面的代码在 eclipse 中使用 java 并且我不知道 python 所以如果语法有问题,我很抱歉。试试这个看看。

driver.implicitly_wait(10)
Startmyarchive = driver.find_element_by_css_selector("._42ft._42fu.selected._42gz._42gy")
Startmyarchive.click()

driver.implicitly_wait(10)
Acknowledge = driver.find_element_by_css_selector("._42ft._42fu.layerConfirm.uiOverlayButton.selected._42g-._42gy")
Acknowledge.click()

driver.implicitly_wait(10)
ClickOkay = driver.find_element_by_css_selector("._42ft._42fu.layerCancel.uiOverlayButton.selected._42g-._42gy")
ClickOkay.click()

祝您学习愉快 :-) 如有任何疑问,请回复。