【问题标题】:Download Planner From Microsoft Tasks Using Python使用 Python 从 Microsoft Tasks 下载 Planner
【发布时间】:2021-10-19 16:17:54
【问题描述】:

我正在尝试使用 python、selenium 和 chrome 从 Microsoft 的 Tasks/Planner 网站将规划器导出为 excel。 Selenium 会打开一个缺少 cookie 的新浏览器,因此总是提示输入凭据,并且 - 对于我的公司 - 双重身份验证。根据其他堆栈交换帖子,我保存并使用了解决此问题的 cookie。有没有一种不同的、理想的更好的方法来解决这个问题?我只是想知道。

这是我的代码,以防它帮助面临类似任务的人。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os, time, datetime

import json
def save_cookie(driver, path): #https://stackoverflow.com/questions/45417335/python-use-cookie-to-login-with-selenium
    with open(path, 'w') as filehandler:
        json.dump(driver.get_cookies(), filehandler)

def load_cookie(driver, path):
    with open(path, 'r') as cookiesfile:
        cookies = json.load(cookiesfile)
    for cookie in cookies:
        cookie.pop("domain")
        driver.add_cookie(cookie)

url = "https://tasks.office.com/path/to/planner"
menu_selector = '//button[@title="More. Navigate to other pages related to this plan."]'
save_selector = "Export plan to Excel"

#r = requests.Session()
driver = webdriver.Chrome(r"C:\Users\user\AppData\Roaming\Python\Python38\site-packages\chromedriver.exe")

#Go to domain cookies rely on
driver.get("https://tasks.office.com/")
#load cookies
load_cookie(driver, r"C:\Users\user\Downloads\cookies.json")
driver.get(url) #go to actual website

authenticated = 'definitive_text_segment_from_url' in driver.current_url

if not authenticated: #Login to refresh cookie if stale.
    username = input("Please provide a username")
    password = input("Please provide a password")

    driver.find_element_by_name("loginfmt").send_keys(username)
    driver.find_element_by_name("loginfmt").send_keys(Keys.RETURN)
    
    
    driver.find_element_by_name("pf.username").send_keys(username)
    driver.find_element_by_name("pf.pass").send_keys(password)
    driver.find_element_by_name("pf.pass").send_keys(Keys.RETURN)

    authentification_code = input("Please provide the authentification code.")
    
elem = driver.find_element_by_xpath(menu_selector)
elem.click() #clicks on three dots
elem = driver.find_element_by_name(save_selector)
elem.click() #clicks on export planner option and autosaves file

save_cookie(driver, r"C:\Users\user\Downloads\cookies.json")

【问题讨论】:

  • 你不能用api吗?
  • @RJAdriaansen 感谢您的回复!是的,当我查看它并跳到更简单的 selenium + cookie 选项时,我没有看到导出为 excel 的选项。但现在我已经进一步研究它似乎是可行的。

标签: python selenium-chromedriver ms-office


【解决方案1】:

您是否尝试过使用 Edge 驱动程序而不是 Chrome?对我来说,通过 Microsoft 的 Edge 驱动程序启动 Edge 绕过了许多与 Microsoft 相关的登录步骤。

【讨论】:

猜你喜欢
  • 2016-09-12
  • 2018-08-31
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
相关资源
最近更新 更多