zoukankan      html  css  js  c++  java
  • Linux企业级项目实践之网络爬虫(17)——存储页面

    在爬虫系统中数据的流量相当大,要处理的数据内容不仅包括爬虫系统的各种数据结构空间,而且包括从外部节点中得到的各种数据,比如HTTP请求,HTML页面,ROBOT.TXT等等。如果对这些内容处理不当,那么不仅造成空间的冗余浪费,使爬虫程序效率降低,而且还可能会使系统崩溃。所以,要有合适的空间分配策略。
    空间分配与管理方案。
    在内存中使用缓冲空间,以快速的得到、存储数据。
    统一各种请求的结构,应该合理利用并在每次用完后进行回收。比如,ROBOT.TXT文件,HTTP请求头及相应的应答。这种方式,在站点数目数量相当庞大的情况下,非常有必要。

    在页面的抓取部分和保存部分之间设置合适的接口,直接进行数据交换,从而使系统不必分配更多的空间来缓冲数据。数据缓冲功能由保存部分内部实现。


    static int handler(void * data) {
        Response *r = (Response *)data;
        
        if (strstr(r->header->content_type, "text/html") == NULL)
            return MODULE_ERR;
    
        char *fn = url2fn(r->url);
        int fd = -1;
        if ((fd = open(fn, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {
            return MODULE_ERR;
        }
    
        int left = r->body_len;
        int n = -1;
        while (left) {
            if ((n = write(fd, r->body, left)) < 0) {
                // error
                close(fd);
                unlink(fn);
                free(fn);
                return MODULE_ERR;
            } else {
                left -= n;
            }
        }
        close(fd);
        free(fn);
        return MODULE_OK;
    }


  • 相关阅读:
    gentoo 网络配置
    gentoo 安装
    渗透流程与相应的工具使用
    Web 安全工具篇:Burp Suite 使用指南
    kali&BT5下利用nmap对mysql等数据库渗透与爆破
    一个网站的渗透测试思路,流程
    网站渗透测试原理及详细过程
    mysql渗透过程
    AWVS介绍
    Windows下Python3.6.2+Django-1.11.5+httpd-2.4.27-win64-VC14部署网站
  • 原文地址:https://www.cnblogs.com/new0801/p/6176994.html
Copyright © 2011-2022 走看看