【问题标题】:Copying rendered text with Puppeteerjs使用 Puppeteer Js 复制渲染文本
【发布时间】:2018-09-14 16:06:54
【问题描述】:

我在寻找使用 Puppeteer 复制文本的方法时遇到问题。

在我的研究中,我发现了这个post,但这不是我想要做的(从输入中复制文本)。我想做的是从网站复制文本。然后将其粘贴到 Google Doc 文件中。我的主要目标是保持格式。

我已经能够通过以下方式获取 HTML 文本:

let html_content = await page.evaluate(el => el.innerHTML, await page.$('#sites-canvas-main-content > table > tbody > tr > td > div'));

不幸的是,这不会保留格式化的文本。

这甚至可以用 Puppeteer 做吗?

【问题讨论】:

  • 您能否提供您尝试将 HTML 粘贴到谷歌文档中的内容?您可能不理解的是 HTML 样式背后的 CSS,并且为了“复制”您需要包含的样式;但是,它可能要求您将 CSS“应用”到您正在复制的 html 元素,以便当您将其粘贴到谷歌文档中时,它具有正确的 CSS,而不仅仅是没有 style 属性的 HTML。 (<div style="color:black;"><div>
  • 我将删除的 HTML 粘贴到 Google 文档中,它只是将其用作计划文本。我正在尝试做粗体、链接等。我可以获取 HTML 和 HTML 中的文本,它只是在放入文档时使用它的格式。
  • 你能发布你用来粘贴到谷歌文档中的代码吗? :) 这将有助于使您的问题更完整。
  • 绝对!我会更新的!当涉及到获得 HTML 的部分时,我拥有
  • 我有 ``` for(let link in links) let html_content = await page.evaluate(el => el.innerHTML, await page.$('#sites-canvas-main- content > table > tbody > tr > td > div')) console.log(html_content)} ```我在手机上抱歉任何格式不好

标签: javascript node.js google-chrome web-scraping puppeteer


【解决方案1】:

解决方案的第一部分是获取计算的样式,使用

https://github.com/GoogleChrome/puppeteer/issues/696

const button = await page.evaluate(() => {
        const btn = document.querySelector('.button');
        return JSON.parse(JSON.stringify(getComputedStyle(btn)));
});

解决方案的第二部分是将这些应用于元素并将其粘贴到谷歌文档中...

【讨论】:

  • 感谢您为我指明了正确的方向!我真的迷路了。
  • 顺便说一句。我找到了这个库。 inline-css
  • 我仍然无法解决所有问题。我只是通过样式传递 HTML。它永远不会像网站那样改变文本的字体大小/颜色。这可能只是谷歌文档的问题。
  • 只是为了让以后看到这个帖子的人。这个网站是一个谷歌网站。我最终使用 Google 的脚本语言来获得所需的一切!
猜你喜欢
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多