Facebook帐户下载自动化与python?

时间:2016-05-12 13:11:15

标签: python facebook selenium selenium-chromedriver

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

我已经尝试在网站上搜索此主题,虽然许多报道部分我还没有找到一个处理Facebook弹出窗口的问题。如果我错了,我道歉并请相应修改帖子。

作为一个起点,我决定开始学习python,并使用它来编写selenium和Chrome Driver的一些帮助。我已设法编写代码进行登录并导航到正确的页面,然后单击初始链接“下载副本”。我正在努力让脚本找到并单击弹出窗口中的“启动我的存档”按钮。

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

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

1 个答案:

答案 0 :(得分:0)

只需将其添加到您的代码中,如果它正常工作则运行。始终使用CssSelector。

看,我用java在eclipse中运行下面的代码,我不知道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()

快乐学习:-)请回复任何查询。