Estoy tratando de raspar un elemento HTML en una página web. El contenido de este elemento es generado por Javascript y, por lo tanto, no se puede raspar simplemente ejecutando solicitudes.GET: response = requests.get(url) .
Leí en otras publicaciones que se puede usar Selenium para resolver este problema, pero requiere un navegador real instalado y el uso del controlador correspondiente. Este código está destinado a ejecutarse en diferentes máquinas que cambian con frecuencia, por lo que no puedo escribirlo para que solo funcione si se instala un navegador en particular.
Si hay una manera de raspar el contenido de Javascript sin depender de un navegador en particular, entonces eso es lo que estoy buscando, sin importar el módulo.
Además de automatizar un navegador, sus otras 2 opciones son las siguientes:
intente encontrar la consulta de back-end que carga los datos a través de javascript. No es una garantía de que existirá, pero abra las Herramientas de desarrollador de su navegador - pestaña Red - fetch/Xhr y luego actualice la página, con suerte verá solicitudes a una API de back-end que carga los datos que desea. Si encuentra una solicitud, haga clic en ella y explore el punto final, los encabezados y posiblemente la carga útil que se envía para obtener la respuesta que está buscando, todo esto se puede recrear en python usando solicitudes a ese punto final oculto.
la otra posibilidad es que los datos ocultos en el HTML dentro de una etiqueta de secuencia de comandos posiblemente en un archivo json... Abra la pestaña Elementos de sus herramientas de desarrollador donde puede ver el HTML de la página, haga clic derecho en la etiqueta y haga clic en "expandir recursivamente", esto abrirá todas las etiquetas (puede tardar un segundo) y podrá desplazarse hacia abajo y buscar los datos que desee. Ignore las etiquetas HTML regulares, sabemos que está cargado por javascript, así que revise cualquier etiqueta de "script". Si lo encuentra, es de esperar que pueda encontrarlo en su secuencia de comandos con una combinación de Beautiful Soup para obtener la etiqueta de la secuencia de comandos y el corte de cadenas para obtener el json.
Si ninguno de estos produce resultados, pruebe el paquete request_html y, específicamente, el método "renderizar". Instala automáticamente un navegador sin cabeza cuando ejecuta por primera vez el método de procesamiento en su secuencia de comandos.
¿Qué sitio es, tal vez pueda ofrecer más ayuda si puedo verlo?