【问题标题】:Cannot access clipboard in Heroku (Selenium webscraper - python)无法访问 Heroku 中的剪贴板(Selenium webscraper - python)
【发布时间】:2021-10-19 09:56:46
【问题描述】:

我在 heroku 中部署了一个非常基本的网络爬虫来定期按下一个按钮,然后将一个链接复制到浏览器剪贴板,然后我将其存储在一个变量中:

text = pyclip.paste()

这在运行 Windows 10 的本地计算机上运行良好,但是当我将其部署到 heroku 时,出现以下错误:

2021-08-17T12:57:38.512015+00:00 app[worker.1]: text = pyclip.paste()
2021-08-17T12:57:38.512026+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/pyclip/__init__.py", line 
41, in paste
2021-08-17T12:57:38.512144+00:00 app[worker.1]: raise ClipboardSetupException("Could not setup clipboard").with_traceback(_CLIPBOARD_EXCEPTION_TB)
2021-08-17T12:57:38.512154+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/pyclip/__init__.py", line 
19, in <module>
2021-08-17T12:57:38.512316+00:00 app[worker.1]: DEFAULT_CLIPBOARD = detect_clipboard()
2021-08-17T12:57:38.512339+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/pyclip/util.py", line 30, 
in detect_clipboard
2021-08-17T12:57:38.512437+00:00 app[worker.1]: return XclipClipboard()
2021-08-17T12:57:38.512447+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/pyclip/xclip_clip.py", line 29, in __init__
2021-08-17T12:57:38.512561+00:00 app[worker.1]: raise ClipboardSetupException(
2021-08-17T12:57:38.512595+00:00 app[worker.1]: pyclip.base.ClipboardSetupException: Could not setup clipboard
2021-08-17T12:57:38.656967+00:00 heroku[worker.1]: Process exited with status 1
2021-08-17T12:57:38.755984+00:00 heroku[worker.1]: State changed from up to crashed

我猜测功机确实没有剪贴板,webdriver 可以将链接发送到该剪贴板,然后 pyclip 可以从中检索它。

有谁知道解决此问题的方法或在部署刮刀时如何设置和访问剪贴板?

编辑 1 我还安装了 heroku-community/apt buildpack,然后将 copyq 包含在 Aptfile 中,以尝试在构建应用程序时设置剪贴板,但无济于事。有人认为 Docker 是个好主意吗?

【问题讨论】:

    标签: python selenium heroku web-scraping pyclipper


    【解决方案1】:

    作为一种解决方法,如果您使用 Selenium 并且具有 Web 元素,您可以传递 ctrl + v

    pyperclip.copy("some text")
    time.sleep(2)
    driver.find_element_by_xpath('some xpath').send_keys(Keys.CONTROL + "v")
    

    【讨论】:

    • 感谢您的回复,但这并不能解决问题,因为我想将复制的文本/链接存储在变量中以供进一步处理。所以这里的挑战是从 webdrivers 剪贴板中提取数据,我可以在本地使用 pyclip/tkinter 但不能在 dyno 内完成 :(
    • 没有,你是怎么得到数据的?我会假设它是 .text 或 get 属性与 innerHtml 对吗?
    • 我最初关注了这篇文章:stackoverflow.com/questions/64720945/… 然后我也意识到我可以使用 pyclip 并且它会起作用。该变量在我的代码中将剪贴板数据作为字符串接收。
    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多