Hola.
Suele sucederme que en algunas páginas web's hay una lista de link's o pequeños trozos de texto que me interesa copiarlos, por ejemplo.
www.este-es-un-link.(número al azar).jpg
Ese formato de link's se repite varias veces y como es lógico los números al azar es lo único que cambian, ir copiando de uno en uno es muy tedioso a más de lento, ya pues, me preguntaba si conocen algún programa que me permita copiar todo eso o extraerlo en un solo .txt
Puede ser un programa para windows así me descargo el html y lo extraigo o un complemento para firefox u opera para hacerlo directamente desde el código fuente.
Gracias.
Hola! Puedes intentar con jdownloader, puede que resuelva tu problema, el simplemente intenta descargar lo que haga en el portapapeles, sólo tendrías que seleccionar link y copiar
Expresiones regulares es lo que buscas.
Si abres la consola del navegador y pegas este código, te saldrá una alerta con cosas parecidas a links encontradas en el código de la página cargada.
alert(document.querySelectorAll("html")[0].innerHTML.match(/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/g).join("\n"));
Saludos!
Cita de: NullifiedSociety en 11 Enero 2018, 23:42 PM
Expresiones regulares es lo que buscas.
Me fue muy útil tu respuesta, hay alguna forma de poner condicionales a esa lista? para disminuir el número de links, porque también me muestra link's de los íconos y cosas así.
Engel Lex, si o si debo verlo desde el código Jdownloader no me sirve para eso, ya tú sabes temas de logueo y esas cosas.
NullifiedSociety
Espera, solo saca los links con src no los que están dentro de un javascript
Por ejemplo:
button.push (new image ('case1000', ["https://unlink.com/img-case/imagenes/123124324.jpg"], 0));
La condicional que me gustaría poner en un recorre texto sería algo así:
https://unlink.com/img-case/imagenes/*.jpg
Hola aguén.
Emm no sé si entiendo lo que quieres decir.
Pero creo que sí. Quieres hacer lo mismo con los ficheros *.js, ¿es eso?
Para eso, tendrías que coger todos los script tags, y pasarlos por laFunctionQueHemosHechoAntes:
function laFunctionQueHemosHechoAntes(texto) {
return texto.match(/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/g).join("\n");
};
var links = [];
var scriptTags = document.querySelectorAll("script").forEach(function(item) {
$.ajax({
url: item.src,
success: function(jsSource) {
links.push(laFunctionQueHemosHechoAntes(jsSource));
}
});
});
Necesitarás jQuery cargado, puedes obtenerlo de aquí por ejemplo:
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js (https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js)
Esperas a que se hagan todos los AJAX, y printas la variable links, ahí deberían estar todos.
NullifiedSociety lo que hago es pulsar Ctrl+U y de ahí sale todo el código pero los links que me interesan están dentro de esa expresión push que me imagino es javascript no? nada de *.js todo es desde el navegador espero me entiendas, de todos modos, como cargo ese JQuery que dices?
Y solo mencionaba que también me gusta la idea de guardar el html y desde ahí recorrer el texto, pero repito nada de *.js
El jQuery lo puedes cargar copiando el código de la url que te he pasado y pegándolo en la consola del navegador directamente.
Okay, luego quierees coger sólo una parte del string coincidente.
Pues siguiendo con el script anterior, coges los links:
var regexParaLoAnterior = /.../g;
var regexParaLoPosterior = /.../g;
var stringsInteresantes = links.split(/\n/g).forEach(function(item) {
return item.replace(regexParaLoAnterior, "").replace(regexParaLoPosterior, "");
});
Te dejo que saques tranquilamente una regex adecuada para "lo anterior" y "lo posterior".
Saludos!
NullifiedSociety pos nada, ahora resulta que solo extrae menos de la mitad de todos los link's y acabo de darme cuenta que eso pasó desde la primera respuesta que me diste.
Se me ha ocurrido una idea genial, copié el código en sublime text y seleccioné todas las líneas coincidentes y luego con shift + right (tecla de dirección derecha) fui seleccionando el resto, por suerte los números al azar tienen la misma longitud por tanto no tendré problemas, si fueran de diferentes longitudes la cosa se complica, pero no es mi caso así que no importa.
Chau nenes.
-
Edito.
Pos si, me topé con líneas de diferentes longitudes jajaja por suerte no fue muy difícil.
Usé una expresión regular y ya.
unlink.com/(.+).jpg
A quién pueda interesar...