【问题标题】:How to open Google Sheet Doc in Chrome browser using Python?如何使用 Python 在 Chrome 浏览器中打开 Google Sheet Doc?
【发布时间】:2021-05-22 23:38:20
【问题描述】:

(已编辑问题) 我正在使用以下代码尝试在我的 Chrome 浏览器上打开一个已经存在的 Google 工作表。要求是在浏览器中打开工作表。

我不确定 Selenium 是否是最佳选择。是否有不同的方式来验证和访问/在浏览器中打开文档?

现在我正在尝试使用 Selenium 进行练习。下面的代码打开浏览器和登录屏幕。输入 ID 并单击 [下一步] 按钮后,我点击了下面的屏幕。不知道如何绕过这个?

这是代码(由 @Priyank Vekariya 提出更正建议):

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

#open Google logon
driver.find_element_by_name("identifier").send_keys("My_Email_@abc.com")
driver.find_element_by_id("identifierNext").click()

【问题讨论】:

    标签: python-3.x selenium-webdriver google-sheets selenium-chromedriver


    【解决方案1】:

    更新

    我尝试通过 Selenium 使用 Google Chrome、Microsoft Edge 和 Mozilla Firefox 直接登录到 Gmail 或 YouTube 来访问 Google 表格。我还尝试通过 Stack Overflow 和其他服务使用侧通道 Google 登录。只有一次我能够走得足够远,然后才被扔到疯狂的验证码巴士下。

    在经历了所有这些失败之后,我决定更多地考虑这个问题。我确定您无需登录 Google 即可访问 Google Drive 中的文档。您只需从控制文档的帐户共享 Google 表格,并获得使用 Python 读取表格所需的权限。

    共享工作表后,您可以使用 Selenium 访问和查询它。

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument("start-maximized")
    chrome_options.add_argument("--disable-infobars")
    chrome_options.add_argument("--disable-extensions")
    chrome_options.add_argument("--disable-popup-blocking")
    
    # disable the banner "Chrome is being controlled by automated test software"
    chrome_options.add_experimental_option("useAutomationExtension", False)
    chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
    
    driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)
    driver.get('https://docs.google.com/spreadsheets/d/<google provided random string>/edit?usp=sharing')
    
    

    这是共享的 Google 表格,无需登录即可访问或编辑。

    原帖


    Google 禁止使用自动脚本(例如 Selenium)登录 Gmail。

    当您点击了解详情时,您会收到此消息。

    请注意这一行: 正在通过软件自动化而不是人工控制

    您可以绕过这个,但您必须通过另一个门户登录,例如 Stack OverFlow,它允许您使用您的 Gmail 凭据登录。一旦发生这种情况,您就可以访问您的 Google 表格了。

    如果您需要这方面的帮助,请告诉我,我会尝试为您整理一些代码。

    【讨论】:

    • 请举个例子。谢谢你的帮助。我们又在这里见面了:)
    • 我正在研究一个示例,但似乎 Google 已经添加了更多功能来检测 Selenium 登录,即使是通过 Stack OverFlow。当我尝试 Stack Overflow 路线时,我得到了各种验证码,这些验证码必须被绕过。
    • 这里有更多 [关于这个复杂问题的详细信息] (gist.github.com/ikegami-yukino/51b247080976cb41fe93)。目前我无法绕过登录问题。我会继续为您解决问题。
    • 我发布了一个解决方法。请让我知道它是否适用于您的用例。
    • 您的解决方案效果很好!再次感谢您的帮助!
    【解决方案2】:

    您应该在页面的 html 代码中验证标签的名称。当我检查元素的名称时,您尝试查找的这个元素(电子邮件或电话)是不同的。它在我的系统中将名称显示为 "identifier"。您可以通过该元素的 id 尝试。 所以,你应该替换下面的代码。也许会有所帮助。

    driver.find_element_by_name("identifier").send_keys("My_Email_@abc.com")
    

    谢谢。

    【讨论】:

    • 感谢您的回答,但登录后,我现在遇到的屏幕显示:“无法登录此浏览器或应用程序可能不安全。了解更多信息请尝试使用其他浏览器。如果您已经在使用受支持的浏览器,您可以刷新屏幕并再次尝试登录。”。我已编辑问题以包含此内容。
    • 好的。感谢您的回复。
    猜你喜欢
    • 2022-08-04
    • 2021-09-29
    • 2014-04-22
    • 2019-04-12
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    相关资源
    最近更新 更多