zoukankan      html  css  js  c++  java
  • 网址的简单 深搜

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

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

    主函数:

    #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
    ", 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

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

  • 相关阅读:
    OCP-1Z0-051-V9.02-26题
    谨慎使用A2W等字符转换宏
    MySQL 递归查询 当前节点及子节点
    std count_if用法
    OCP-1Z0-053-V12.02-660题
    OCP-1Z0-053-V12.02-667题
    OCP-1Z0-053-V12.02-676题
    OCP-1Z0-051-V9.02-159题
    手工不完全恢复(非归档模式下,日志被覆盖)
    手工完全恢复(非归档模式下,日志没有被覆盖)
  • 原文地址:https://www.cnblogs.com/zibuyu/p/3240943.html
Copyright © 2011-2022 走看看