Chrome的文档说明:
--dump-dom标志将document.body.innerHTML打印到stdout:
根据标题,如何将更多的DOM对象(理想情况下全部)转移到Chromium无头?我可以通过开发人员工具手动保存整个DOM,但我想要一个程序化的解决方案。
更新2019-04-23谷歌在无头前线非常活跃,并且发生了许多更新
以下答案适用于v62当前版本为v73,并且它一直在更新。 https://www.chromestatus.com/features/schedule
我强烈建议检查木偶操作者是否有无头铬的未来发展。它由Google维护,它与npm package一起安装所需的Chrome版本,因此您只需使用文档的puppeteer API,而不用担心Chrome版本并设置无头Chrome和开发工具API之间的连接,这样可以实现99%的魔力。
更新2017-10-29 Chrome已经--dump-html标志返回完整的HTML,而不仅仅是正文。
v62确实拥有它,它已经在稳定的通道上。
解决这个问题:https://pptr.dev/
当前的chrome状态(每个通道的版本)https://bugs.chromium.org/p/chromium/issues/detail?id=752747
遗留旧答案
你可以使用谷歌浏览器远程界面。我试过它并浪费了几个小时试图启动chrome并获得完整的HTML,包括标题,它还没有准备好,我想说。
它有时工作,但我试图在生产环境中运行它,并不时得到错误。所有类型的随机错误,如https://www.chromestatus.com/features/schedule和
connection reset
。这些错误有时会上升,而且很难调试。当我需要身体时,我个人使用
no chrome found to kill
获取HTML,当我需要标题时,我现在只使用--dump-dom
。当然chrome可以从SPA应用程序中为您提供标题,如果从JS设置标题,则无法仅使用curl。在有稳定的解决方案后会切换到谷歌浏览器。很想在chrome上使用
curl
旗帜并获得所有HTML。如果Google的工程师正在阅读此内容,请将此标记添加到Chrome。我在Chrome问题跟踪器上创建了问题,请点击收藏的“明星”以获得Google开发人员的注意:
--dump-html
这里是chrome的所有类型标志的长列表,不确定它是否已满并且所有标志:https://bugs.chromium.org/p/chromium/issues/detail?id=752747没有转储标题标记。
此代码来自Google的博文,您可以试试运气:
https://peter.sh/experiments/chromium-command-line-switches/资料来源:
const CDP = require('chrome-remote-interface'); ... (async function() { const chrome = await launchChrome(); const protocol = await CDP({port: chrome.port}); // Extract the DevTools protocol domains we need and enable them. // See API docs: https://chromedevtools.github.io/devtools-protocol/ const {Page, Runtime} = protocol; await Promise.all([Page.enable(), Runtime.enable()]); Page.navigate({url: 'https://www.chromestatus.com/'}); // Wait for window.onload before doing stuff. Page.loadEventFired(async () => { const js = "document.querySelector('title').textContent"; // Evaluate the JS expression in the page. const result = await Runtime.evaluate({expression: js}); console.log('Title of page: ' + result.result.value); protocol.close(); chrome.kill(); // Kill Chrome. }); })();