网址的简单 深搜

我和小武打算写一个像火车头的接口,今天开工,我就写了个网址的接口。就是根据网址的相似性,来变化出延续的网址

主要练习啦深搜,哎....真难为我这懒人啦

主函数:

#include<stdio.h>

#include<string.h>

#include "UrlCheck.h"



int main()

{

    struct HttpInfo a[10];

    char szDest[1000][256];

    int num , i;

    strcpy(a->szHttpUrl ,"http://movie.douban.com/##/##?start=##&type=T");

    strcpy(a->szWebSpecies, "爱情|动作~helle|word|hihi~12|13|14~");

    strcpy(a->szCodingKind, "utf~sss~num~");



    HttpHatGet(a , szDest, &num);

    for(i = 0 ;i < num ; i++)

    {

        printf("%s\n", szDest[i]);

    }

    return 0;

}
View Code

 

 接口:

#include<stdio.h>

#include<string.h>

#include<string.h>

#include "lyPublic/lyCodeConvert.h"

#include "UrlCheck.h"

#pragma comment (lib , "libmysql.lib")

#define URLLONG 200    

/*

    strHttpInfo:网址的信息

    szDest:需要保存的组合后的URL

    iNum:统计URL的个数

*/

                                                                     //1级 2级

//     char szHttpUrl[256];//网址                http://movie.douban.com/##/##?start=##&type=T 

//    char szWebSpecies[512];//类别                               动作|爱情| ~  num|utf ~阿庆|我操~

//    char szCodingKind[256];//编码种类                                  ufl ~ num~  妹夫的~

//注意 : 类别和 编码种类的后面都要接 ~ 分隔符



//切词

void GetStrFromChar(char *szStr ,char *szGet)

{

    char *p =NULL , *q = NULL;

    int len , n; 

    len = strlen(szStr);

    q = szStr;

    p = strstr(q, "~");

    if( p == NULL)

    {

        p = strstr(q, "|");



        //每个小块,切到最后时,直接Copy

        if (p == NULL)

        {

            strcpy(szGet, szStr);

            return;

        }

    }

    n = p - q ;

    strncpy(szGet, szStr, n);

}



//由传递的szCod类型指示,转化szStr到szUtf上

void GetUtf(char *szCod , char *szStr,char *szUtf)

{

    char *p;

    char TranslateEnd[URLLONG] = "";

    p = szCod;

    if (*p == 'u')

    {

        CodeConvert(szStr, TranslateEnd , sizeof(TranslateEnd) , 2);

        strcpy(szUtf, TranslateEnd);

    }

    else if(*p == 'n' || *p == 's')

    {

        strcpy(szUtf, szStr);

    }

}





    /*

    svHttpUrl :网址信息

    svWebSpecies :要被转化的内容

    svCodingKing:要被转化的 类型

    szDest : 存储 转化好的HTTP

    iUrlNum : 网址数量

  */

//进行深搜

void dfsUrl(char *svHttpUrl, char *svWebSpecies,char *svCodingKing ,char szDest[][256], int *iUrlNum)

{

    char *p = NULL, *q = NULL;

    char *p1 = NULL, *q1 = NULL;

    char *f1 = NULL , *f2 = NULL;

    char *PWeb = NULL; //动作指针

    char szStr[URLLONG] = "";  //爱情

    char szWeb[URLLONG] = "";  //爱情|动作|喜剧

    char szCod[URLLONG] = "";  //uft

    char szUtf[URLLONG] = "";

    char sdHttp[URLLONG] = "";//变换后的HTTP

    char sqHttp[URLLONG] = "";

    int len ,lenStr ,at;



    f1 = strstr(svHttpUrl, "##");

    if(f1 == NULL)    

    //当HTPP中没有##时,说明都变过来啦。要存储一次

    {

        strcpy(szDest[*iUrlNum], svHttpUrl);

        (*iUrlNum)++;    

        return;

    }  

    *f1 = '%';

    *(f1+1) = 's';

    //保存HTTP,以便深都回溯

    strcpy(sqHttp, svHttpUrl);



    GetStrFromChar(svWebSpecies, szWeb);

    GetStrFromChar(svCodingKing, szCod);

    len = strlen(szWeb);

    at = 0;

    q = svCodingKing;

    PWeb = szWeb;

    while(at < len -1)

    {

        GetStrFromChar(PWeb,szStr);

        GetUtf(szCod , szStr, szUtf);

        sprintf(sdHttp, svHttpUrl , szUtf);

        lenStr = strlen(szWeb);

        p = svWebSpecies;

        p1 = p;

        p += lenStr + 1;

        q1 = q;

        q +=4;



        //深搜

        dfsUrl(sdHttp, p, q, szDest, iUrlNum); 

        //还原HTTP 和 每段词

        strcpy(svHttpUrl, sqHttp); 

        q = q1;

        //切词后要把前一段 切掉

        at += strlen(szStr)+1;

        PWeb += strlen(szStr)+1;

        memset(szStr, 0 ,sizeof(szStr));

        memset(szUtf, 0 ,sizeof(szUtf));

    }



}



void HttpHatGet(struct HttpInfo *strHttpInfo, char szDest[][256], int *iUrlNum)

{

    *iUrlNum = 0;

    dfsUrl(strHttpInfo->szHttpUrl, strHttpInfo->szWebSpecies , strHttpInfo->szCodingKind , szDest , iUrlNum);

}

头文件:

#ifndef _URLCHECK_H_

#define _URLCHECK_H_



#ifdef __cplusplus

extern "C"{

#endif

struct HttpInfo

{

    char szHttpUrl[256];//网址

    char szSupplierName[256];//数据源名字

    char szWebSpecies[512];//类别

    char szCodingKind[256];//编码种类

    int  iPageStart;//起始页

    int  iPageEnd;//结束页

    int  iPageRule;//页数增加的规则

    int  iSupplierId;

};

    

/*

    strHttpInfo:网址的信息

    szDest:需要保存的组合后的URL

    iNum:统计URL的个数

*/

void  HttpHatGet(struct HttpInfo *strHttpInfo, char szDest[][256], int *iUrlNum);

/*

void dfsUrl(char *svHttpUrl, char *svWebSpecies,char *svCodingKing ,char szDest[][256], int *iUrlNum);

void GetUtf(char *szCod , char *szUtf);

void GetStrFromChar(char *szStr ,char *szGet);*/

    

#ifdef __cplusplus

}

#endif



#endif 
View Code

其他的 事关 公司 机密,就不贴啦

你可能感兴趣的:(简单)