Добрый день, надеюсь, вы сможете мне помочь. Я должен написать этот код (в C), который загружает источник страницы на веб-сайт и сохраняет его в html-файле (я уже это сделал). Следующая часть - извлечь текст с этого сайта, используя сохраненный html-файл.Извлечение чистого текста из файла HTML
У меня есть этот алгоритм шагов в моей голове:
Скажем, у нас есть HTML-файл, содержащий:
< что-то здесь> < начать> < текст> Hello < текст> BYE! < end>
- Найти строку "", пропустить строку "". (это может быть реализовано с помощью strstr())
- Установите указатель на первый «>» в «». (используйте strchr() ??)
- Проверьте, соответствует ли следующий символ в строке «<»: (игнорирует пробелы) a.) Если да, установите указатель на следующий «>». Повторить проверку (3). b.) Если нет, получите строку до следующего «<». Затем сохраните (добавьте) его в большую строку.
- Наконец, я хотел бы сохранить String в file.txt. (fwite? или вариант a + в fopen()).
Логично, это правильно? Как новичок в программировании, я всегда получаю ошибки. Я написал код, но он всегда приводит к ошибке сегментации.
Пожалуйста, помогите мне/рассказать мне, что случилось с моим кодом: манекене - файл, содержащий HTML коды
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
int get_fileSize(FILE*);
int main(){
FILE *dummy = fopen("Dummy2","r");
int filesize = get_fileSize(dummy);
printf("Size of dummy = %d Bytes.\n", filesize);
char *newString = (char*)malloc((sizeof(char*))*(filesize));
if(dummy){
fread(newString, sizeof(char*), filesize, dummy);
}
char *tempString = (char*)malloc((sizeof(char*))*(filesize));
char *finalString = (char*)malloc((sizeof(char*))*(filesize));
finalString = "\0";
tempString = strtok(newString, "<");
do{
//printf("%s\n",tempString);
tempString = strtok(NULL, ">");
if(tempString[1]!='<'){
sprintf(finalString,"%s%s",finalString,tempString);
}else continue;
}while(*(newString++)!='\0');
puts(finalString);
return 0;
}
int get_fileSize(FILE *dummy){
int size;
struct stat file;
fstat(fileno(dummy), &file);
size = file.st_size;
return size;
}
Один делает а не просто проанализировать HTML –
Какие именно элементы HTML вы хотите извлечь? Почему вы не используете библиотеку, которая может анализировать HTML/XML? –
@MichaelFoukarakis, насколько это возможно, я не хочу использовать эти библиотеки сэр. Я все еще изучаю C, и мне поручено сделать это классическим способом. – Norman