Estoy usando node-fetch para intentar obtener el contenido de un sitio web. He leído un par de preguntas similares como esta o esta pero todavía no puedo resolverlo.
Cuando estoy en la página, veo un conjunto de HTML cuando voy a View:Source y otro en el Inspector. Parece que esto se debe a que el sitio web me muestra el DOM instantáneo, mientras que View Source (CTRL + U) me muestra lo que se envió inicialmente. Por ejemplo, la "Vista:Fuente" del HTML comienza:
<!doctype html><html lang="en" translate="no"><head><meta name="version"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/>Y comienza la versión "Inspector" del HTML:
<html translate="no" class="fontawesome" lang="en"><head style=""><scriptAsí es como mi solicitud está configurada actualmente usando node-fetch:
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args)); var options1 = { method: 'POST' ,headers:{/*omitting the options here*/ } ,body: new URLSearchParams(postData)}; var urlString1 = new URL(url); fetch(urlString1, options1) .then(res =>{console.log(res.headers); return res.text();}) .then(values=>{ console.log(values);}); ;¿Cómo configuro mi solicitud para obtener el HTML del "Inspector" y no de "Ver código fuente"?
Parece que esto se debe a que el sitio web me muestra el DOM instantáneo, mientras que View Source (CTRL + U) me muestra lo que se envió inicialmente.
Exactamente.
View Source le muestra el contenido de texto del HTML.
El árbol DOM en las herramientas de desarrollo de su navegador (lo que ve cuando hace clic con el botón derecho y hace clic en Inspeccionar elemento) le muestra cuáles son los elementos realmente cargados, incluida cualquier manipulación que se haya realizado con JavaScript desde la carga. Básicamente, se analiza el HTML, se crea el árbol y luego, para comodidad del desarrollador, se vuelve a convertir a HTML de nuevo con un formato agradable para que lo vea en las Herramientas para desarrolladores.
¿Cómo configuro mi solicitud para obtener el HTML del "Inspector" y no de "Ver código fuente"?
En realidad, debe ejecutar un motor de navegador, como Chrome sin cabeza. Hay varios paquetes NPM para hacer esto.