網路爬蟲二

2021-07-29 16:59:14 字數 1899 閱讀 5177

網路抓取系統分為核心和擴充套件元件兩部分。核心部分是乙個精簡的、模組化的爬蟲實現,而擴充套件部分則包括一些便利的、實用性的功能。目標是盡量的模組化,並體現爬蟲的功能特點。這部分提供簡單、靈活的api,在基本不改變開發模式的情況下,編寫乙個爬蟲。

擴充套件元件部分提供一些擴充套件的功能,內建了一些常用的元件,便於對爬蟲進行功能擴充套件。

蜘蛛主要功能模組如下:

排程器

一般來說,我們最終需要的都不是原始的html頁面。我們需要對爬到的頁面進行分析,轉化成結構化的資料,並儲存下來

持久化器

持久化器負責抽取結果的處理,包括計算、持久化到檔案、資料庫等。

當我們設計好程式框架之後就要開始實現它了。第一步當然是要實現主程式的流程框架。之後我們逐漸填充每個流程的細節和其需要呼叫的模組。

主程式的流程如下:

1、 解析命令列引數,並根據引數跳轉到相應的處理分支

2、 解析配置檔案

3、 載入處理模組

4、 載入種子url

5、 啟動抓取任務

主程式的**如下:

int main(int argc, void *argv)  

} g_conf = initconfig();

loadconfig(g_conf);

set_nofile(1024);

vector

::iterator it = g_conf->modules.begin();

for(; it != g_conf->modules.end(); it++)

if (g_conf->seeds == null) else

}

if (daemonized)

daemonize();

chdir("download");

int err = -1;

if ((err = create_thread(urlparser, null, null, null)) < 0)

int try_num = 1;

while(try_num < 8 && is_ourlqueue_empty())

usleep((10000

<< try_num++));

if (try_num >= 8)

if (g_conf->stat_interval > 0)

int ourl_num = 0;

g_epfd = epoll_create(g_conf->max_job_num);

while(ourl_num++ < g_conf->max_job_num)

int n, i;

while(1)

} for (i = 0; i < n; i++)

epoll_ctl(g_epfd, epoll_ctl_del,arg->fd, &events[i]); /* del event */

printf("helloepoll:event=%d\n",events[i].events);

fflush(stdout);

create_thread(recv_response, arg,null, null);

} }

spider_log(spider_level_debug, "task done!");

close(g_epfd);

return

0;

}

網路爬蟲二

一 正規表示式 正規表示式 regular expression 又稱規則表示式,它是對字串操作的一種邏輯公式,即用事先定義好的一些特定字元以及這些特定字元的組合,組成乙個 規則字串 這個 規則字串 用來表達對字串的一種過濾邏輯。電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規...

網路爬蟲(二)

爬取海王電影20180101 20190101影評 import json import time from datetime import datetime,timedelta import requests 傳送請求,獲取響應 defget data url headers response r...

python網路爬蟲(二)

在第一篇中,我們介紹了如何進行發起乙個http請求,並接受響應。在這一部分中,我們介紹一下如何解析網頁並提取我們需要的資料。我們採用requests這個庫進行乙個網頁請求。r requests.get headers,kwargs 通過這一句 我們即可獲得伺服器傳給我們的響應內容 不考慮連線錯誤等情...