Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created February 2, 2021 20:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/9eb5d432a77ce48db89969cc8f79f695 to your computer and use it in GitHub Desktop.
Save parzibyte/9eb5d432a77ce48db89969cc8f79f695 to your computer and use it in GitHub Desktop.
void extraerTexto(char *nombreArchivo)
{
FILE *archivo;
unsigned char bufer[TAMANIO_BUFER];
archivo = fopen(nombreArchivo, "r");
if (archivo == NULL)
{
printf("Error abriendo el archivo");
return;
}
// Leer archivo
char contenido[TAMANIO_MAXIMO_CONTENIDO] = "";
while (!feof(archivo))
{
fread(bufer, sizeof(char), sizeof(bufer), archivo);
// Almacenar contenido en el búfer
strcat(contenido, bufer);
}
// Extraer lo que hay entre <body> y </body>
const char inicioEtiqueta[] = "<body>";
const char finEtiqueta[] = "</body>";
size_t longitudInicioEtiqueta = strlen(inicioEtiqueta);
char *punteroInicio = strstr(contenido, inicioEtiqueta) + longitudInicioEtiqueta;
char *punteroFin = strstr(contenido, finEtiqueta);
if (punteroInicio == NULL || punteroFin == NULL)
{
printf("No se encontraron las etiquetas");
return;
}
char cuerpoHtml[TAMANIO_MAXIMO_CONTENIDO] = "";
char contenidoLimpio[TAMANIO_MAXIMO_CONTENIDO] = "";
size_t longitud = punteroFin - punteroInicio;
// Copiar el contenido del cuerpo a cuerpoHtml
strncpy(cuerpoHtml, punteroInicio, longitud);
int i = 0;
const char simboloInicio = '<';
const char simboloFin = '>';
int ignorando = 0;
// Recorrer el cuerpo e ignorar etiquetas
for (i = 0; i < strlen(cuerpoHtml); i++)
{
char caracterActual = cuerpoHtml[i];
// Si encontramos una etiqueta abriendo, establecemos la bandera en true
if (caracterActual == simboloInicio)
{
ignorando = 1;
}
// Si encontramos el del final, establecemos la bandera en false
if (caracterActual == simboloFin)
{
ignorando = 0;
}
// Si no debo ignorar este carácter, y éste carácter no es >, entonces es un carácter válido
if (!ignorando && caracterActual != simboloFin)
{
// Aquí se puede hacer cualquier cosa con el char. Yo solo lo estoy concatenando
concatenarCharACadena(caracterActual, contenidoLimpio);
}
}
// Aquí se puede hacer cualquier cosa con la cadena
printf("%s", contenidoLimpio);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment