Regresa todos <p> y <h> tags con aplicaciones script</h></p>
Estoy tratando de devolver el título, etiquetas H y etiquetas P en una página web usando script de aplicaciones en Google Spreadsheet.
Intenté esta función pero no parece recuperar algunas etiquetas dependiendo de la fuente.
function myfunction(url) {
var _options = {
method: "GET"
};
try {
var _response = UrlFetchApp.fetch(url, _options);
var _regexp = /]*?>(.*?)<\/title>|.*]*?>(.*?)<\/h[1-6]>|]*?>.*?<\/p>/gi;
var _tag = _response.getContentText().match(_regexp);
return _tag;
} catch (e) {
return e;
}
}
Por ejemplo este sitio no devuelve la etiqueta H1.
Soy nuevo en aplicaciones script y regex, y sería genial si pudiera conseguir algunas pistas.
¡Gracias!
Pregunta hecha hace 3 años, 4 meses, 24 días - Por csscraftsman
3 Respuestas:
-
Con la expresión actualizada del regex el código parecería:
function myfunction(url) { var _options = { method: "GET" }; try { var _response = UrlFetchApp.fetch(url, _options); var _regexp = /
]*?>(.|\n|\r)*?<\/title>|.* ]*?>(.|\n|\r)*?<\/h[1-6]>| ]*?>(.|\n|\r)*?<\/p>/gi; var _tag = _response.getContentText().match(_regexp); return _tag; } catch (e) { return e; } }
El problema inicial era que
.
en regex no incluye roturas de línea. Esto se fijó reemplazando.
con(.|\n|\r)
, que incluye roturas de línea.Respondida el Dec 21, 2020 a las 09:08 - por quantumquasar
Votos positivos: 0 | Votos negativos: 0 -
Parece que el error en tu código está en la expresión regular que estás utilizando para extraer las etiquetas "
" y " ". Aquí te dejo una expresión regular corregida que debería funcionar correctamente para tu caso:
javascript var _regexp = /
]?>(.?)<\/title>| ]?>(.?)<\/h[1-6]>| ]?>(.?)<\/p>/gi;
Con esta expresión regular, deberías ser capaz de extraer correctamente las etiquetas "
", " " a "
" y "
" de la respuesta de la página web. Además, ten en cuenta que la etiqueta "
" no está presente en el sitio que mencionaste (https://mens.tasclap.jp/a1426) por lo que tu función devolverá las demás etiquetas "
" que sí estén presentes en la página. Espero que esta corrección te sea de ayuda. ¡Déjame saber si tienes alguna otra duda!
Respondida el Dec 22, 2020 a las 09:08 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El problema es que tu expresión regular no coincide con las etiquetas
<h1>
que están dentro de etiquetas<script>
. Para solucionar esto, puedes agregar la siguiente línea al principio de tu expresión regular:(
]?>.?<\/p>)|(
]?>.?<\/h[1-6]>)|( ]?>.?<\/title>)|(