【问题标题】:Playwright: Download via Print to PDF?剧作家:通过打印下载到 PDF?
【发布时间】:2022-11-09 02:00:38
【问题描述】:

我正在寻求使用 Playwright 抓取网页。

我加载页面,并成功单击 Playwright 的下载按钮。这将打开一个打印对话框,其中选择了打印机。

我想选择“另存为 PDF”,然后单击“保存”按钮。

这是我当前的代码:

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    playwright_page = browser.new_page()
    got_error = False

    try:
        playwright_page.goto(url_to_start_from)
        print(playwright_page.title())
        html = playwright_page.content()
    except Exception as e:
        print(f"Playwright exception: {e}")
        got_error = True

    if not got_error:
        soup = BeautifulSoup(html, 'html.parser')

        #download pdf
        with playwright_page.expect_download() as download_info:
            playwright_page.locator("text=download").click()

        download = download_info.value
        path = download.path()
        download.save_as(DOWNLOADED_PDF_FOLDER)

    browser.close()

有没有办法使用 Playwright 做到这一点?

【问题讨论】:

  • 好的,是的,你是对的。我有headless= False,所以我可以看到发生了什么。但是我还不确定“一个命令行打印到 PDF 输出”的想法。我设置了headless= Trueplaywright_page.locator("text= download").click() 超时等待事件“下载”。您能否发布您想到的代码行作为答案?然后我可以实施它们并将您的答案标记为已接受。
  • 我对这个主题不够了解,无法掌握您要传达的内容。我不知道如何通过 Playwright 进入浏览器。如果您可以发布几行代码,那将非常有帮助。
  • 我已将更多现有代码添加到原始帖子中。可能与 Playwright 合作过的人可以提供示例代码来完成此操作。与此同时,我将按照您推荐的路线进行研究。
  • @KJ,您对set headless = True 的建议非常有帮助。由于在无头模式下应该没有 UI,Chrome 甚至不会创建打印对话框。还有其他一些故障使我最初无法使其正常工作,但现在我已经解决了。请以答案的形式发布您的建议,我会将其标记为已接受。
  • 好的。好吧,如果您只是发布一个答案,例如“如果您使用 headless=True,您将不会获得打印对话框”,我会将其标记为已接受。 :)

标签: automation download playwright headless-browser playwright-python


【解决方案1】:

非常感谢 cmets 中的 @KJ,他建议使用 headless=True,Chromium 甚至不会首先放置打印对话框。

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 2021-03-22
    • 2011-06-14
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2014-08-25
    相关资源
    最近更新 更多