Estoy trabajando en la captura de pantalla y quiero recuperar el código fuente de una página en particular.
¿Cómo se puede lograr esto con javascript? Por favor, ayúdame.
javascript
html
praveenjayapal
fuente
fuente
$.ajax
para enlaces externos. aquí está la solución - stackoverflow.com/a/18447625/2657601Respuestas:
Una forma sencilla de empezar, prueba jQuery
$("#links").load("/Main_Page #jq-p-Getting-Started li");
Más en jQuery Docs
Otra forma de hacer screen scraping de una manera mucho más estructurada es usar YQL o Yahoo Query Language. Devolverá los datos raspados estructurados como JSON o xml.
por ejemplo
, raspemos stackoverflow.com
select * from html where url="http://stackoverflow.com"
le dará una matriz JSON (elegí esa opción) como esta
"results": { "body": { "noscript": [ { "div": { "id": "noscript-padding" } }, { "div": { "id": "noscript-warning", "p": "Stack Overflow works best with JavaScript enabled" } } ], "div": [ { "id": "notify-container" }, { "div": [ { "id": "header", "div": [ { "id": "hlogo", "a": { "href": "/", "img": { "alt": "logo homepage", "height": "70", "src": "http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png", "width": "250" } ……..
La belleza de esto es que puede hacer proyecciones y cláusulas where que, en última instancia, le permiten estructurar los datos raspados y solo los datos que necesita (mucho menos ancho de banda en el cable en última instancia),
por ejemplo.
select * from html where url="http://stackoverflow.com" and xpath='//div/h3/a'
te conseguirá
"results": { "a": [ { "href": "/questions/414690/iphone-simulator-port-for-windows-closed", "title": "Duplicate: Is any Windows simulator available to test iPhone application? as a hobbyist who cannot afford a mac, i set up a toolchain kit locally on cygwin to compile objecti … ", "content": "iphone\n simulator port for windows [closed]" }, { "href": "/questions/680867/how-to-redirect-the-web-page-in-flex-application", "title": "I have a button control ....i need another web page to be redirected while clicking that button .... how to do that ? Thanks ", "content": "How\n to redirect the web page in flex application ?" }, …..
Ahora, para obtener solo las preguntas, hacemos un
select title from html where url="http://stackoverflow.com" and xpath='//div/h3/a'
Tenga en cuenta el título en las proyecciones
"results": { "a": [ { "title": "I don't want the function to be entered simultaneously by multiple threads, neither do I want it to be entered again when it has not returned yet. Is there any approach to achieve … " }, { "title": "I'm certain I'm doing something really obviously stupid, but I've been trying to figure it out for a few hours now and nothing is jumping out at me. I'm using a ModelForm so I can … " }, { "title": "when i am going through my project in IE only its showing errors A runtime error has occurred Do you wish to debug? Line 768 Error:Expected')' Is this is regarding any script er … " }, { "title": "I have a java batch file consisting of 4 execution steps written for analyzing any Java application. In one of the steps, I'm adding few libs in classpath that are needed for my co … " }, { ……
Una vez que escribe su consulta, genera una URL para usted
http://query.yahooapis.com/v1/public/yql?q=select%20title%20from%20html%20where%20url%3D%22http%3A%2F%2Fstackoverflow.com%22%20and%0A%20% 20% 20% 20% 20% 20xpath% 3D '% 2F% 2Fdiv% 2Fh3% 2Fa'% 0A% 20% 20% 20% 20 & format = json & callback = cbfunc
en nuestro caso.
Así que al final terminas haciendo algo como esto
var titleList = $.getJSON(theAboveUrl);
y juega con él.
Hermoso , ¿no?
fuente
Se puede usar Javascript, siempre que tome cualquier página que esté buscando a través de un proxy en su dominio:
<html> <head> <script src="/js/jquery-1.3.2.js"></script> </head> <body> <script> $.get("www.mydomain.com/?url=www.google.com", function(response) { alert(response) }); </script> </body>
fuente
Simplemente puede usar
XmlHttp
(AJAX) para acceder a la URL requerida y la respuesta HTML de la URL estará disponible en laresponseText
propiedad. Si no es el mismo dominio, sus usuarios recibirán una alerta del navegador que dice algo como "Esta página está intentando acceder a un dominio diferente. ¿Quiere permitir esto?"fuente
Como medida de seguridad, Javascript no puede leer archivos de diferentes dominios. Aunque podría haber alguna solución extraña, consideraría un idioma diferente para esta tarea.
fuente
Usando jquery
<html> <head> <script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js" ></script> </head> <body> <script> $.get("www.google.com", function(response) { alert(response) }); </script> </body>
fuente
Si es absolutamente necesario utilizar javascript, puede cargar la fuente de la página con una solicitud ajax.
Tenga en cuenta que con javascript, solo puede recuperar páginas que están ubicadas bajo el mismo dominio que la página solicitante.
fuente
Solía ImportIO . Te permiten solicitar el HTML de cualquier sitio web si configuras una cuenta con ellos (que es gratis). Te permiten realizar hasta 50.000 solicitudes por año. No les tomé tiempo para encontrar una alternativa, pero estoy seguro de que hay algunas.
En su Javascript, básicamente solo hará una solicitud GET como esta:
var request = new XMLHttpRequest(); request.onreadystatechange = function() { jsontext = request.responseText; alert(jsontext); } request.open("GET", "https://extraction.import.io/query/extractor/THE_PUBLIC_LINK_THEY_GIVE_YOU?_apikey=YOUR_KEY&url=YOUR_URL", true); request.send();
Nota al margen: encontré esta pregunta mientras investigaba lo que sentía que era la misma pregunta, por lo que otros pueden encontrar mi solución útil.
ACTUALIZACIÓN: Creé uno nuevo que me permitieron usar por menos de 48 horas antes de que dijeran que tenía que pagar por el servicio. Parece que cierran su proyecto bastante rápido ahora si no está pagando. Hice mi propio servicio similar con NodeJS y una biblioteca llamada NightmareJS. Puede ver su tutorial aquí y crear su propia herramienta de raspado web. Es relativamente sencillo. No he intentado configurarlo como una API a la que pudiera hacer solicitudes ni nada.
fuente
Puedes usar fetch :
const URL = 'https://www.sap.com/belgique/index.html'; fetch(URL) .then(res => res.text()) .then(text => { console.log(text); }) .catch(err => console.log(err));
fuente
jquery no es la forma de hacer las cosas. Hacer en purre javascript
var r = new XMLHttpRequest(); r.open('GET', 'yahoo.comm', false); r.send(null); if (r.status == 200) { alert(r.responseText); }
fuente
Puede generar un XmlHttpRequest y solicitar la página, y luego usar getResponseText () para obtener el contenido.
fuente
Puede utilizar la API de FileReader para obtener un archivo y, al seleccionar un archivo, poner la URL de su página web en el cuadro de selección. Utilice este código:
function readFile() { var f = document.getElementById("yourfileinput").files[0]; if (f) { var r = new FileReader(); r.onload = function(e) { alert(r.result); } r.readAsText(f); } else { alert("file could not be found") } } }
fuente
Puede omitir la política del mismo origen creando una extensión de navegador o incluso guardando el archivo como .hta en Windows (aplicación HTML).
fuente
A pesar de muchos comentarios en sentido contrario, creo que es posible superar el mismo requisito de origen con JavaScript simple.
No estoy afirmando que lo siguiente sea original porque creo que vi algo similar en otro lugar hace un tiempo.
Solo lo he probado con Safari en una Mac.
La siguiente demostración recupera la página en la etiqueta base y mueve su innerHTML a una nueva ventana. Mi secuencia de comandos agrega etiquetas html, pero con la mayoría de los navegadores modernos, esto podría evitarse utilizando externalHTML.
<html> <head> <base href='http://apod.nasa.gov/apod/'> <title>test</title> <style> body { margin: 0 } textarea { outline: none; padding: 2em; width: 100%; height: 100% } </style> </head> <body onload="w=window.open('#'); x=document.getElementById('t'); a='<html>\n'; b='\n</html>'; setTimeout('x.innerHTML=a+w.document.documentElement.innerHTML+b; w.close()',2000)"> <textarea id=t></textarea> </body> </html>
fuente
TypeError: undefined is not an object (evaluating 'w.document')
<script> $.getJSON('http://www.whateverorigin.org/get?url=' + encodeURIComponent('hhttps://example.com/') + '&callback=?', function (data) { alert(data.contents); }); </script>
Incluya jQuery y use este código para obtener HTML de otro sitio web. Reemplace example.com con su sitio web .
Este método implica que un servidor externo obtenga el HTML del sitio y se lo envíe. :)
fuente
javascript:alert("Inspect Element On"); javascript:document.body.contentEditable = 'true'; document.designMode='on'; void 0; javascript:alert(document.documentElement.innerHTML);
Resalte esto y arrástrelo a la barra de marcadores y haga clic en él cuando desee editar y ver el código fuente del sitio actual.
fuente
En linux
descargar slimerjs (slimerjs.org)
descargar firefox versión 59
agregue esta variable de entorno: export SLIMERJSLAUNCHER = / home / en / Letöltések / firefox59 / firefox / firefox
en la página de descarga de slimerjs use este programa .js (./slomerjs program.js):
var page = require('webpage').create(); page.open( 'http://www.google.com/search?q=görény', function() { page.render('goo2.pdf'); phantom.exit(); } );
Utilice pdftotext para obtener texto en la página.
fuente