v62 ma to, jest już na stabilnym kanale.
można zrobić z Google Chrome zdalnego interfejsu. Próbowałem go i zmarnowałem kilka godzin próbując uruchomić chrome i uzyskać pełny html, w tym tytuł i to jeszcze nie jest gotowe, powiedziałbym.
To działa czasami, ale próbowałem uruchomić go w środowisku produkcyjnym i otrzymałem błędy od czasu do czasu. Wszystkie rodzaje losowych błędów, takich jak i no chrome found to kill
. Te błędy wzrosły czasem o i ciężko jest debugować.
Osobiście używam --dump-dom
, aby uzyskać html, gdy potrzebuję ciała, a kiedy potrzebuję tytułu, używam na razie tylko curl
. Oczywiście, chrom może dać ci tytuł z aplikacji SPA, którego nie można zrobić z zawijaniem tylko, jeśli ustawiono tytuł z JS na . Przełączę na google chrome po stabilnym rozwiązaniu .
Chciałbym mieć flagę --dump-html
na chrome i po prostu uzyskać wszystkie html. Jeśli inżynier Google czyta to, dodaj taką flagę do chrome.
Utworzyłem problem Chrome emisyjnej tracker, kliknij ulubiony „gwiazda”, aby uzyskać zauważony przez programistów Google:
https://bugs.chromium.org/p/chromium/issues/detail?id=752747
Oto długa lista wszelkiego rodzaju flagi dla Chrome , nie jestem pewien, czy jest to pełna i wszystkie flagi: https://peter.sh/experiments/chromium-command-line-switches/ nic nie znaczy , aby zrzucić tag tytułu.
Kod ten jest z blogu Google, można spróbować szczęścia z tym:
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.
});
})();
Źródło: https://developers.google.com/web/updates/2017/04/headless-chrome