使用 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()
祝您学习愉快 :-) 如有任何疑问,请回复。
作为我工作职责中的一项常规任务,我经常需要从用户帐户中下载完整的 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()
祝您学习愉快 :-) 如有任何疑问,请回复。