zoukankan      html  css  js  c++  java
  • Linux企业级项目实践之网络爬虫(9)——通过URL抓取网页内容

    基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。完整的、带有授权部分的普通统一资源标志符语法看上去如下:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志
    爬虫系统要处理的URL是指使用超文本传输协议HTTP的URL。
    URL分为绝对URL和相对URL
    绝对URL显示文件的完整路径,这意味着绝对URL本身所在的位置与被引用的实际文件的位置无关。
    相对URL以包含URL本身的文件夹的位置为参考点,描述目标文件夹的位置。如果目标文件与当前页面(也就是包含URL的页面)在同一个目录,那么这个文件的相对URL仅仅是文件名和扩展名,如果目标文件在当前目录的子目录中,那么它的相对URL是子目录名,后面是斜杠,然后是目标文件的文件名和扩展名。
    如果要引用文件层次结构中更高层目录中的文件,那么使用两个句点和一条斜杠。可以组合和重复使用两个句点和一条斜杠,从而引用当前文件所在的硬盘上的任何文件,

    一般来说,对于同一服务器上的文件,应该总是使用相对URL,它们更容易输入,而且在将页面从本地系统转移到服务器上时更方便,只要每个文件的相对位置保持不变,链接就仍然是有效地。


    char * url_normalized(char *url) 
    {
        if (url == NULL) return NULL;
    
        /* rtrim url */
        int len = strlen(url);
        while (len && isspace(url[len-1]))
            len--;
        url[len] = '';
    
        if (len == 0) {
            free(url);
            return NULL;
        }
    
        /* remove http(s):// */
        if (len > 7 && strncmp(url, "http", 4) == 0) {
            int vlen = 7;
            if (url[4] == 's') /* https */
                vlen++;
    
            len -= vlen;
            char *tmp = (char *)malloc(len+1);
            strncpy(tmp, url+vlen, len);
            tmp[len] = '';
            free(url);
            url = tmp;
        }
    
        /* remove '/' at end of url if have */
        if (url[len-1] == '/') {
            url[--len] = '';
        }
    
        if (len > MAX_LINK_LEN) {
            free(url);
            return NULL;
        }
    
        return url;
    }


  • 相关阅读:
    pat 甲级 1065. A+B and C (64bit) (20)
    pat 甲级 1064. Complete Binary Search Tree (30)
    pat 甲级 1010. Radix (25)
    pat 甲级 1009. Product of Polynomials (25)
    pat 甲级 1056. Mice and Rice (25)
    pat 甲级 1078. Hashing (25)
    pat 甲级 1080. Graduate Admission (30)
    pat 甲级 团体天梯 L3-004. 肿瘤诊断
    pat 甲级 1099. Build A Binary Search Tree (30)
    Codeforce 672B. Different is Good
  • 原文地址:https://www.cnblogs.com/new0801/p/6177002.html
Copyright © 2011-2022 走看看