# C et C++ > C > Contribuez >  tentative de projet libwebdoc

## lilington

Salut, j'ai commence il y a peu l'ecriture d'une lib pour mon loisir personnel.
cette library contient www.h html.h rss.h xml.h cgstring.h. avant de dire ce que chaque partie permet de faire je vais vous presenter le pourquoi.
j'ai commence par cgstring car j'utilise souvent le C mais quand j'ai besoin de faire des traitements sur des fichiers texts ou des chaines de caractere je suis obliger de passer a perl ou python car le C en vraiment pauvre. donc j'ai entrepris la creation de fonction telque splitstr, replacestr...
puis j'ai voulu ecrire un spider donc les autres parties sont venu d'elle meme.
a l'origine c'etait pour moi et moi seule que j'ecrivais ce code. Maintenant je le publi pour 2 raisons. 
1/ il doit surment avoir des trucs crades dans mon code que je ne vois pas car ca marche chez moi, donc j'aimerai bien que d'autres testent, lisent le code et m'insulte quand il faut le faire.
2/ si c'est bien que je ne sois pas le seul a en profiter. non?

je vous donne un exemple d'utilisation de la lib.


```

```

exemple avec RSS


```

```

bref le code est disponiblehttps://sourceforge.net/projects/libwebdoc/ ici, regarder le et n'hesitez pas a critiquer.

parlons des parties.
CGSTRING s'occupe essentiellement du traitement des chaines de caracteres, certaines fonction comme lenStr existe deja (strlen) d'autre pas, et d'autre avenir comme cpyStr pour copy mais ca sera legerement different de strcpy car par exemple si vous taper cpyStr(&str,NULL) ca reviendra a faire free(str). en utilisant cpyStr vous n'avez pas besoin au prealable d'allouer de la memoire mais un free() devient obligatoire car cpyStr malloquise votre pointeur. 

RSS, juste gentillement mettre un fichier rss dans une structure, elle est definie dans rss.h et vous avez si vous telecharger le projet un fichier qui explique tout mais en anglais. paresse de reecrire en francais.

XML, encore tres incomplet ne lit pas mais fait qu'ecrire des fichiers xml de la maniere la plus simple possible, en faite tout ce dont j'avais besoin quand j'ecrivais le truc.

www.h   encore beaucoup de choses a faire mais pour l'instant on peut get une page web ou un fichier et enregister il y a d'autre sous fonctions qui peuvent etre interressantes.

html.h   la c'est le bordel d'ailleurs dans le pdf qui va avec j'ai juste donne des precisions sur tres peu de fonction car certaine on ete ecrite et modifie des 10aines de fois, il y en a meme que je ne comprend plus. mais des fonctions sont tres utilisable telque htmlstrip_tags() qui supprime toutes les balises html et le code css, js. pour l'instant ca se passe bien avec les pages web que j'ai tester, d'ailleur j'ai utiliser cette lib pour ecrire un spider(tres salement code) que je vais mettre aussi a disposition de tout le monde(apres reecriture du code) et j'ai crawler en entier fedora-fr.org et cntv.cn sans le moindre probleme.

fuite memoire. pour l'instant valgrind m'a rien signale.
erreur que je comprend pas. valgrind me dit qu'il y a des erreurs mais je pige rien a ce qu'il me racconte.

compatibilite.
code tres peu portable hors de unix/linux. d'ailleur la partie socket doit etre reecrite pour windows mais je le ferai sans doute jamais. en plus j'ai pas trouver d'equivalent pour Visualstudio pour regex.h donc j'ai abandonne l'interoprabilite.
en plus j'ai pas de windows dans mes environs.

me contacter: ben ici ou a l'adresse que j'ai donne chez sourceforge.

----------


## aslo92

Bonjour lilington,

je me demande pourquoi tu n'utilises pas strlen, strcat, strcpy dans ton code ?

Est-ce parce que tu veux les rcrire toi mme ?

----------


## lilington

strlen,strcat,strcpy ont ete reecrit avec des effets differents(sauf strlen), par exemple l'allocation se fait dant cpystr donc pas besoin de faire un malloc ce qui imposse donc que seul un pointeur soit envoyer comme argument. les tableaux ne sont pas utilisables.
de plus les fonctions que tu cites ne sont pas dans stdio.h ni stdlib.h mais dans string.h
stdlib.h est partiquement indispensable quand on programme en C. 

j'inclut stdio.h sans vraiment avoir besoin, c'est juste pour faire des printf pour tester. quand la lib sera stable je vais virer les printf et donc stdio.h aussi

----------


## souviron34

j'avoue tre perplexe..

Il est tellement plus facile de se faire un strtok qui ne dtruit pas la chane , et d'utiliser les fonctions standard..

Je ne vois pas ce qui ne te vas pas dans les fonctions tradtitionnelles..

----------


## lilington

effectivement, tu as raison, mais en faite c'est parceque tu ne vois que une reecriture de quelque chose qui existe deja.
Je vais etre plus claire.
Il y a deux raison:
1/ utilisant moi meme au boulot la dite lib, je n'avais pas envis d'inclure string.h juste pour utiliser 2 fonctions.
2/ les fonctions font la meme chose de facon differente et pour ca je te montre du code:
strcpy et cpySTR:


```

```

deplus on peut constater que on peut faire plusieurs copy sans faire un free car cpySTR libere la destination avant tout d'ou l'importance de lui envoyer un pointeur NULL sinon on a double free corruption.
c'est de ce genre de comportement que j'avais besoin personnellement. en plus d'autre fonctions non fourni comme split(), replace(), readlines().
mais le but premier de la lib c'est pas ca, c'est recuper une page web et faire le traitement de la page. 
voici par exemple un code qui extrait le contenu d'un commentaire sur un forum:

```

```

 pour extraire tout les commentaire suffira de faire une boucle do while.
en faite le but premier c'est ca. faire des spiders, extraire du contenu(text,image) de pages web
Maintenant si vous trouve que c'est pas utilse  ::cry::  j'y peux rien, je vais la garder pour moi.
sinon merci quand meme de l'avoir telecharge et regarde un peu

----------


## souviron34

> pour extraire tout les commentaire suffira de faire une boucle do while.
> en faite le but premier c'est ca. faire des spiders, extraire du contenu(text,image) de pages web
> Maintenant si vous trouve que c'est pas utilse


Non, c'est un joli projet personnel  ::): 

La seule cse, c'est que tu aurais pu par exemple utiliser le source-code du premier navigateur Web, Mosaic, disponible gratuitement ici ou  l (explications ici ou l par exemple), qui t'aurait donn une bonne base pour un interprteur HTML...

----------


## lilington

+1
ah mais c'est que c'est justement ce que je vais faire, j'aime apprendre et ca ne me derange pas de tout recommencer hein. d'ailleur en faisant ca seul et en relisant le code j'ai vu des absurdite donc je vais voir mosaic et certainement tout recommencer si il y a lieu.

Merci

ps: j'ai pas encore lu le code mais vu les date 1996 pour la derniere version... Je sais pas trop ce qui se passait sur le net en 96, j'ai commencer en 2001 a toucher internet par a coup je preferai mon qbasic a l'epoque 1996

plein de problemes a la compilation de la version 2.7 j'aurai aime voir comment ca gere les pages de notre epoque mais c'est pas grave je vais me contenter de lire le code. encore merci pour le lien

ps2: bon ben sur fedora on peut avoir le binaire de la 2.7(yum) donc j'ai pu tester sur quelques site, c'est pas tres beau a voir mais l'essenciel est la, je vais plonge sur le code, parcontre les liens sur explications je suppose que ce sont pas celles du code? parcque j'ai rien trouve (tu me diras le conde est plutot claire)

----------


## souviron34

> ps: j'ai pas encore lu le code mais vu les date 1996 pour la derniere version... Je sais pas trop ce qui se passait sur le net en 96, j'ai commencer en 2001 a toucher internet par a coup je preferai mon qbasic a l'epoque 1996
> 
> plein de problemes a la compilation de la version 2.7 j'aurai aime voir comment ca gere les pages de notre epoque mais c'est pas grave je vais me contenter de lire le code. encore merci pour le lien
> 
> ps2: bon ben sur fedora on peut avoir le binaire de la 2.7(yum) donc j'ai pu tester sur quelques site, c'est pas tres beau a voir mais l'essenciel est la, je vais plonge sur le code, parcontre les liens sur explications je suppose que ce sont pas celles du code? parcque j'ai rien trouve (tu me diras le conde est plutot claire)


C'est sr que c'est ancien : c'est (pratiquement) le premier navigateur  ::): , avec X11 pour que ce soit portable...

Si je te cite les sources, c'est que il y a un parser HTML (puisque c'tait le but)..

Je n'ai pas dt que a couvrait tout : juste que c'tait une bonne base pour voir comment tait fait un parser HTML..

Maintenant, c'tait HTML 1.0, voire 2.0. 

Mais en ce qui concerne le parsing, tu as la base de l'analyse des balises et de la structure des fonctions..

----------


## lilington

oui,oui j'ai deja commence a regarder tout ca.

----------

