make kit google extensions extension example development developer create chrome javascript google-chrome google-chrome-extension xmlhttprequest web-scraping

kit - Raspado web en una extensión de Google Chrome(JavaScript+API de Chrome)



make a google chrome extension (7)

¿No podrías hacer un truco de iframe? si carga la url en un marco dedicado, tiene dom en un objeto de documento y puede hacer sus selecciones de jquery, ¿no?

¿Cuáles son las mejores opciones para realizar Web Scraping de una pestaña que no está abierta actualmente dentro de una extensión de Google Chrome con JavaScript y las tecnologías que estén disponibles? También se aceptan otras bibliotecas de JavaScript.

Lo importante es enmascarar el raspado para que se comporte como una solicitud web normal . No hay indicaciones de AJAX o XMLHttpRequest, como X-Requested-With: XMLHttpRequest u Origin .

El contenido raspado debe ser accesible desde JavaScript para una mayor manipulación y presentación dentro de la extensión, muy probablemente como una cadena.

¿Hay algún gancho en alguna API específica de WebKit / Chrome que pueda usarse para hacer una solicitud web normal y obtener los resultados para la manipulación?

var pageContent = getPageContent(url); // TODO: Implement var items = $(pageContent).find(''.item''); // Display items with further selections

Puntos de bonificación para hacer que esto funcione desde un archivo local en el disco , para la depuración inicial. Pero si ese es el único punto es detener una solución, entonces ignore los puntos de bonificación.


Creo que puedes comenzar con este example .

Entonces, básicamente, puedes intentar usar la combinación de Extensión + Complemento. La extensión tendría acceso a DOM (incluido el complemento) e impulsaría el proceso. Y el complemento enviaría solicitudes HTTP reales.

Puedo recomendar el uso de Firebreath como una plataforma de complemento de Chrome / Firefox multiplataforma, en particular, eche un vistazo a este ejemplo: example


El web scraping es complicado en una extensión de Chrome. Algunos puntos:

  • Ejecuta scripts de contenido para acceder al DOM.
  • Las páginas de fondo (una por navegador) pueden enviar y recibir messages a las secuencias de comandos de contenido. Es decir, puede ejecutar un script de contenido que configura un punto final RPC y activa una devolución de llamada especificada en el contexto de la página de fondo como respuesta.
  • Puede ejecutar secuencias de comandos de contenido en todos los marcos de una página web, luego unir el árbol de documentos (compuesto por los cuadros 1.NN que contiene la página).
  • Como sugirió SK, su página de fondo puede enviar los datos como XMLHttpRequest a algún tipo de servidor HTTP liviano que escuche localmente.

Intenta usar XHR2 responseType = "document" y (new DOMParser).parseFromString(responseText, getResponseHeader("Content-Type")) a (new DOMParser).parseFromString(responseText, getResponseHeader("Content-Type")) con mi parche text/html . Consulte https://gist.github.com/1138724 para ver un ejemplo de cómo detecto responseType = "document soporte de responseType = "document (comprobando sincrónicamente la response === null en una URL de objeto creada a partir de un blob de text/html ).

Use la API Chrome WebRequest para ocultar los encabezados X-Requested-With , etc.


No estoy seguro de que sea completamente posible con solo JavaScript, pero si puede configurar un script PHP dedicado para su extensión que use cURL para buscar el HTML de una página, el script PHP podría raspar la página y su extensión podría leer entrar a través de una solicitud de AJAX.

La página real que se está raspando no sabría que es una solicitud de AJAX, sin embargo, porque se está accediendo a través de cURL.


Se han lanzado muchas herramientas desde que se hizo esta pregunta.

artoo.js es uno de ellos. Es una pieza de código JavaScript que debe ejecutarse en la consola de su navegador para proporcionarle algunas utilidades de raspado. También se puede usar como una extensión de cromo.


Si está buscando algo más allá de un complemento de Google Chrome, mire phantomjs que usa Qt-Webkit en segundo plano y se ejecuta como un navegador que incluye solicitudes de ajax. Puede llamarlo como un explorador sin cabeza, ya que no muestra la salida en una pantalla y puede funcionar de forma inacabada en el fondo mientras está haciendo otras cosas. Si lo desea, puede exportar imágenes, PDF de las páginas que obtiene. Proporciona una interfaz JS para cargar páginas, hacer clic en los botones, etc. de forma similar a como lo hace en un navegador. También puede inyectar JS personalizado, por ejemplo, jQuery en cualquiera de las páginas que desee raspar, y usarlo para acceder al dom y exportar los datos deseados. Como usa Webkit su comportamiento de representación es exactamente como Google Chrome.

Otra opción sería utilizar Aptana Jaxer, que está basado en Mozilla Engine y es un concepto muy bueno en sí mismo. También se puede usar como una simple herramienta de raspado.