網路抓取系統分為核心和擴充套件元件兩部分。核心部分是乙個精簡的、模組化的爬蟲實現,而擴充套件部分則包括一些便利的、實用性的功能。目標是盡量的模組化,並體現爬蟲的功能特點。這部分提供簡單、靈活的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 通過這一句 我們即可獲得伺服器傳給我們的響應內容 不考慮連線錯誤等情...