通用爬蟲框架開發(fā)

需求: 品牌監(jiān)控,各品牌關(guān)鍵詞在各個(gè)數(shù)據(jù)源關(guān)于此關(guān)鍵詞的數(shù)據(jù)抓取,生成protobuf數(shù)據(jù)格式的log,以小時(shí)入,并傳入bos中

思路是: 輸入關(guān)鍵詞,調(diào)用各個(gè)數(shù)據(jù)源對(duì)應(yīng)的爬蟲接口和解析方式獲得數(shù)據(jù)

框架設(shè)計(jì)思想:

爬蟲框架初期思路是實(shí)現(xiàn)解耦爬蟲流程(http請(qǐng)求,獲得響應(yīng),解析響應(yīng)體,通過管道進(jìn)行數(shù)據(jù)處理)封裝成三個(gè)對(duì)象和5個(gè)模塊,而封裝實(shí)現(xiàn)就是三個(gè)對(duì)象在5個(gè)模塊中間的方法調(diào)用,解析

對(duì)象部分:

http請(qǐng)求分別封裝request對(duì)象,response對(duì)象

request對(duì)象首先調(diào)用python爬蟲庫(kù)requests,封裝其請(qǐng)求方法和請(qǐng)求參數(shù)

流程解析部分:

request對(duì)象生成后,如果不添加異步功能,就直接用download模塊去發(fā)送request對(duì)象的(中間可以添加隨機(jī)ip,useragent,cookie等等),得到相響應(yīng)對(duì)象之后,動(dòng)態(tài)調(diào)用對(duì)應(yīng)爬蟲的解析方式去解析,最后生成最終想要的數(shù)據(jù)

詳細(xì)流程:

五個(gè)模塊, 爬蟲模塊: 起始url,解析響應(yīng)數(shù)據(jù),

調(diào)度模塊: 請(qǐng)求隊(duì)列

下載器模塊: 根據(jù)請(qǐng)求,分析請(qǐng)求的請(qǐng)求方法請(qǐng)求體生成響應(yīng)

目標(biāo)數(shù)據(jù)模塊: 定義數(shù)據(jù)格式

引擎模塊:整體邏輯驅(qū)動(dòng)

? a. 構(gòu)造spider中start_urls中的請(qǐng)求

? b. 傳遞給調(diào)取器進(jìn)行保存,之后從中取出

? c .取出的request對(duì)象交給下載器進(jìn)行下載,返回response

? d .response交給爬蟲模塊進(jìn)行解析,提取結(jié)果

? e .如果結(jié)果是request對(duì)象,重新交給調(diào)度器,如果結(jié)果是item對(duì)象,交給管道處理(中間做個(gè)判斷即可)

需要實(shí)現(xiàn)的功能有:

1 支持多種不同爬蟲,(導(dǎo)入各個(gè)爬蟲對(duì)象)

2 自動(dòng)調(diào)用對(duì)應(yīng)爬蟲解析方法(讀取框架默認(rèn)settings,再將對(duì)應(yīng)爬蟲的settings添加進(jìn)去并且覆蓋掉)

4 實(shí)現(xiàn)多線程 (for循環(huán)生成新的線程,實(shí)現(xiàn)settings控制for循環(huán)次數(shù),線程完畢后自動(dòng)生成新的線程)

5 實(shí)現(xiàn)異步(通過中間生成Queue,放入請(qǐng)求對(duì)象,多線程讀取請(qǐng)求對(duì)象)

6 實(shí)現(xiàn)速度控制 (從Queue讀取數(shù)據(jù)時(shí)可以設(shè)置時(shí)間延遲,每個(gè)spider不同)

7 中間件模塊方法拓展(添加隨機(jī)useragent,隨機(jī)ip,甚至隨機(jī)cookie)

8 流程控制 (通過框架內(nèi)spider_frame.engine實(shí)現(xiàn))

框架模型為: project(配置新爬蟲) spider_frame(通用爬蟲框架模塊)

后期會(huì)添加通用爬蟲平臺(tái)的建設(shè)功能(前端新開頁面)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本主題主要是scrapy入門,包含內(nèi)容如下:??1. Scrapy框架環(huán)境搭建;??2. 理解scrapy框架結(jié)...
    楊強(qiáng)AT南京閱讀 1,530評(píng)論 0 10
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,668評(píng)論 1 32
  • 前言 爬蟲就是請(qǐng)求網(wǎng)站并提取數(shù)據(jù)的自動(dòng)化程序,其中請(qǐng)求,提取,自動(dòng)化是爬蟲的關(guān)鍵。Python作為一款出色的膠水語...
    王奧OX閱讀 3,658評(píng)論 1 8
  • 共享房車揭秘 房車在歐美流行近百年,但是在中國(guó)興起卻是最近的事情,在2015年之前,美國(guó)房車保有量近千萬臺(tái),中國(guó)房...
    楊大帥房車界郎朗閱讀 257評(píng)論 0 0
  • 支持。父母的財(cái)產(chǎn)并不屬于兒女,建議父母盡量用光。子女應(yīng)盡贍養(yǎng)義務(wù),雙方都是。 支持。 支持,此乃真知灼見。 反對(duì),...
    妖刀DC閱讀 335評(píng)論 0 0

友情鏈接更多精彩內(nèi)容