Quiero rastrear la página y buscar los hipervínculos en esa página respectiva y también seguir esos hipervínculos y capturar datos de la página¿es posible escribir un rastreador web en javascript?
Respuesta
Si usa javascript en el lado del servidor es posible. Usted debe echar un vistazo a Node.JS
Y un ejemplo de una oruga se pueden encontrar en el enlace de abajo:
http://www.colourcoding.net/blog/archive/2010/11/20/a-node.js-web-spider.aspx
En general, el navegador de JavaScript sólo puede arrastrarse dentro del dominio de su origen, porque recuperar páginas se haría a través de Ajax, que está restringido por Same-Origin Policy.
Si la página de ejecutar el script rastreador está en www.example.com, después de que la escritura puede rastrear todas las páginas de www.example.com, pero no en las páginas de cualquier otro origen (a menos que se aplica algún caso extremo , por ejemplo, el encabezado Access-Control-Allow-Origin está configurado para páginas en el otro servidor).
Si realmente desea escribir un rastreador con todas las funciones en el navegador JS, podría escribir una extensión del navegador: por ejemplo, Chrome extensions se empaquetan ejecución de la aplicación Web con permisos especiales, incluyendo cross-origin Ajax. La dificultad de este enfoque es que tendrá que escribir varias versiones del rastreador si desea admitir varios navegadores. (Si el rastreador es solo para uso personal, probablemente no sea un problema.)
La mayoría de los navegadores modernos admiten extensiones escritas en Javascript, no solo en Chrome: me pregunto por qué solo menciona Chrome en su respuesta. – lucideer
@lucideer Una buena pregunta: originalmente escribí una explicación un poco mejor, pero pensé que era demasiado larga. He editado mi último párrafo para que sea un poco más claro. – apsillers
Voto por subir para describir las limitaciones del entorno del navegador y completar las respuestas anteriores. –
Mi configuración típica es usar una extensión de navegador con el conjunto de privilegios de origen cruzado, que está inyectando el código del rastreador y jQuery.
Otra toma sobre orugas, JavaScript es utilizar un navegador sin cabeza como PhantomJS o casperJS (lo que aumenta los poderes de fantasma)
+1 para PhantomJS. –
Hay formas de burlar la política del mismo origen con JS. Escribí un rastreador para Facebook, que reunía información de perfiles de Facebook de mis amigos y los amigos de mi amigo y permitía filtrar los resultados por género, ubicación actual, edad, estado civil (capten mi opinión). Fue simple. Lo acabo de ejecutar desde la consola. De esta forma, su script tendrá privilegios para realizar solicitudes en el dominio actual. También puede hacer un bookmarklet para ejecutar el script desde sus marcadores.
Otra forma es proporcionar un proxy PHP. Su script accederá al proxy en el dominio actual y solicitará archivos de otro con PHP. Solo ten cuidado con esos. Estos podrían ser secuestrados y utilizados como un proxy público por un tercero si no tiene cuidado.
Buena suerte, tal vez a tomar un amigo o dos en el proceso como lo hice :-)
Esto es lo que necesita http://zugravu.com/products/web-crawler-spider-scraping-javascript-regular-expression-nodejs-mongodb Utilizan NodeJS, MongoDB y ExtJs como GUI
Intenta citar algunos de los puntos importantes de tu enlace en tu respuesta. De esta forma, si el sitio se cae o el contenido se mueve a una URL diferente sin un redireccionamiento adecuado, su respuesta puede ser útil. – ydaetskcoR
hemos podido rastrear las páginas que usan Javascript desde el lado del servidor con la ayuda de un kit web sin cabeza. Para rastrear, tenemos pocas bibliotecas como PhantomJS, CasperJS, también hay un nuevo contenedor en PhantomJS llamado Nightmare JS que facilita las tareas.
sí es posible
- Uso nodejs (su JS lado del servidor)
- No es NGP (gestor de paquetes que gestiona el módulo 3 ª parte) en nodejs
- Uso PhantomJS en NodeJS (módulo de terceros que puede rastrear a través de sitios web es PhantomJS)
Hay un enfoque del lado del cliente para esto, utilizando la extensión Firefox Greasemonkey. con Greasemonkey puedes crear scripts para que se ejecuten cada vez que abras URL específicas.
aquí un ejemplo:
si tiene las direcciones URL como éstas:
http://www.example.com/products/pages/1
http://www.example.com/products/pages/2
continuación, puede utilizar algo como esto para abrir todas las páginas que contienen la lista de productos (ejecutar esta manualmente)
var j = 0;
for(var i=1;i<5;i++)
{
setTimeout(function(){
j = j + 1;
window.open('http://www.example.com/products/pages/ + j, '_blank');
}, 15000 * i);
}
luego puede crear una secuencia de comandos para abrir todos los productos en una nueva ventana para cada página de lista de productos e incluir esta url en Greasemonkey para eso.
http://www.example.com/products/pages/ *
y luego un guión para cada página de producto para extraer datos y llamar a un servicio web que pasan los datos y cerrar la ventana y así sucesivamente.
Hice un ejemplo de rastreador javascript en github.
Es un evento controlado y utiliza una cola en memoria para almacenar todos los recursos (es decir, direcciones URL).
Cómo utilizar en su entorno nodo
var Crawler = require('../lib/crawler')
var crawler = new Crawler('http://www.someUrl.com');
// crawler.maxDepth = 4;
// crawler.crawlInterval = 10;
// crawler.maxListenerCurrency = 10;
// crawler.redisQueue = true;
crawler.start();
Aquí Sólo te estoy mostrando 2 Método de núcleo de una oruga Javascript.
Crawler.prototype.run = function() {
var crawler = this;
process.nextTick(() => {
//the run loop
crawler.crawlerIntervalId = setInterval(() => {
crawler.crawl();
}, crawler.crawlInterval);
//kick off first one
crawler.crawl();
});
crawler.running = true;
crawler.emit('start');
}
Crawler.prototype.crawl = function() {
var crawler = this;
if (crawler._openRequests >= crawler.maxListenerCurrency) return;
//go get the item
crawler.queue.oldestUnfetchedItem((err, queueItem, index) => {
if (queueItem) {
//got the item start the fetch
crawler.fetchQueueItem(queueItem, index);
} else if (crawler._openRequests === 0) {
crawler.queue.complete((err, completeCount) => {
if (err)
throw err;
crawler.queue.getLength((err, length) => {
if (err)
throw err;
if (length === completeCount) {
//no open Request, no unfetcheditem stop the crawler
crawler.emit("complete", completeCount);
clearInterval(crawler.crawlerIntervalId);
crawler.running = false;
}
});
});
}
});
};
Aquí está el enlace github https://github.com/bfwg/node-tinycrawler. Es un rastreador web javascript escrito bajo 1000 líneas de código. Esto debería ponerlo en el camino correcto.
Google's Chrome team has released puppeteer en agosto de 2017, una biblioteca de nodos que proporciona una API de alto nivel para Chrome sin cabeza y sin cabeza (Chrome sin cabeza está disponible since 59).
Utiliza una versión incrustada de Chromium, por lo que se garantiza que funciona de la caja.Si desea utilizar una versión específica Chrome, puede hacerlo mediante el lanzamiento de titiritero con una ruta ejecutable como parámetros, tales como:
const browser = await puppeteer.launch({executablePath: '/path/to/Chrome'});
Un ejemplo de navegar a una página web y tomar una captura de pantalla de ella muestra cómo simple es (tomado de la página de GitHub):
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
- 1. ¿Cómo escribir un rastreador?
- 2. rastreador web en ruby
- 3. rastreador web que puede interpretar JavaScript
- 4. ¿Cómo puedo manejar Javascript en un rastreador web Perl?
- 5. Hacer un rastreador web/araña
- 6. ¿Es posible llamar a un servicio web con Indesign javascript?
- 7. ¿Es posible escribir un cliente SSH de JavaScript que use conectores web para el transporte?
- 8. Ruby, Mongodb, Anemone: rastreador web con posible pérdida de memoria?
- 9. Posible escribir un compilador con Javascript?
- 10. simple rastreador web en C#
- 11. ¿Es posible escribir un firewall en python?
- 12. experto rastreador ejemplo F # Web
- 13. ¿Es posible cargar gzip javascript comprimido sin un servidor web?
- 14. ¿Es posible escribir un cliente de Skype?
- 15. ¿Es posible crear un applet web JavaFX?
- 16. ¿Es posible escribir código para escribir código?
- 17. ¿Es posible escribir sintaxis como -()()?
- 18. rastreador en appengine
- 19. ¿Es posible escribir frases sencillas en Python?
- 20. Rastreador de errores que se ejecuta en un pendrive USB. es posible?
- 21. ¿Es posible escribir un dispositivo basado en Windows?
- 22. ¿Es posible agregar un código de navegador en javascript
- 23. Factor de cortesía típico para un rastreador web?
- 24. ¿Un rastreador/araña de web C++ muy simple?
- 25. rastreador Web de comparación de precios
- 26. ¿Es posible escribir datos en el propio stdin en Linux
- 27. ¿Es posible escribir un sistema operativo para un teléfono móvil?
- 28. ¿Es posible escribir una aplicación web local que no necesita un servidor?
- 29. Etiqueta adecuada para un rastreador web Solicitudes HTTP
- 30. trampas legales o éticas para el rastreador web?
No necesita ser del lado del servidor; no necesita ser una aplicación web en absoluto (si usa un nodo). – Quentin
de hecho, pero me gusta pensar que ese nodo maneja principalmente la lógica de negocios, por lo que en mi opinión debería catalogarse como lógica del lado del servidor. –
Puede escribir aplicaciones de línea de comandos en el nodo y una aplicación de línea de comandos cumplirá los requisitos de la pregunta. No será del lado del servidor porque no será una aplicación web (por lo tanto, no hay servidor). – Quentin