網頁分析本質上是字符串處理和分析。所以妳需要掌握正則表達式和字符串處理相關的函數,還有函數庫,比如tidy library。正則表達式用來匹配壹類字符串,方便查找模式和處理。而且正則表達式與語言無關,任何語言都可以使用。標準C庫中沒有與正則表達式相關的函數。壹般來說,C中有兩種正則表達式庫,壹種是POSIX C正則庫,壹種是perl正則庫PCRE。相比較而言,PCRE更強大,POSIX C規範庫就足夠了。
例程,將下載的網頁源代碼處理成不帶標簽的純文本:
#包含?& lttidy.h & gt
#包含?& ltbuffio.h & gt
#包含?& ltstdio.h & gt
#包含?& lt錯誤號& gt
int?main(int?argc,?夏爾?**argv?)
{
const?char*?輸入?=?“& lttitle & gtFoo & lt/title & gt;& ltp & gtFoo!”;
TidyBuffer?輸出?=?{0};
TidyBuffer?errbuf?=?{0};
int?rc?=?-1;
布爾?ok;
TidyDoc?tdoc?=?tidy create();?//?初始化?"文件"
printf(?"整理:\t%s\n ",輸入?);
好嗎?=?tidyOptSetBool(?tdoc,?TidyXhtmlOut,?什麽事?);?//?皈依?去哪?可擴展的超文本標記語言
如果?(?好嗎?)
rc?=?tidySetErrorBuffer(?tdoc,?& amperrbuf?);?//?俘獲?診斷學
如果?(?rc?& gt=?0?)
rc?=?tidyParseString(?tdoc,?輸入?);?//?解析?那個?投入
如果?(?rc?& gt=?0?)
rc?=?tidyCleanAndRepair(?tdoc?);?//?整潔?它?起來。
如果?(?rc?& gt=?0?)
rc?=?tidyRunDiagnostics(?tdoc?);?//?吹毛求疵的人
如果?(?rc?& gt?1?)?//?如果?錯誤,?武力?輸出。
rc?=?(?tidyOptSetBool(tdoc,TidyForceOutput,?是)?rc?:?-1?);
如果?(?rc?& gt=?0?)
rc?=?tidySaveBuffer(?tdoc,?& amp輸出?);?//?漂亮嗎?打印
如果?(?rc?& gt=?0?)
{
如果?(?rc?& gt?0?)
printf(?" \n診斷信息:\n\n%s ",errbuf.bp?);
printf(?“\nAnd?這裏嗎?是嗎?那個?結果:\n\n%s ",output.bp?);
}
其他
printf(?“壹個?嚴重嗎?錯誤?(%d)?發生了。\n“,?rc?);
tidyBufFree(?& amp輸出?);
tidyBufFree(?& amperrbuf?);
tidyRelease(?tdoc?);
回歸?RC;
}