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.
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.
$.ajaxpara enlaces externos. aquí está la solución - stackoverflow.com/a/18447625/2657601
Respuestas:
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
en nuestro caso.
Así que al final terminas haciendo algo como esto
var titleList = $.getJSON(theAboveUrl);
y juega con él.
Hermoso , ¿no?
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>
Simplemente puede usar XmlHttp(AJAX) para acceder a la URL requerida y la respuesta HTML de la URL estará disponible en la responseTextpropiedad. 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?"
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>
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.
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));
Puede generar un XmlHttpRequest y solicitar la página, y luego usar getResponseText () para obtener el contenido.
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")
}
}
}
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).
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>
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. :)
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.
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.