簡(jiǎn)單來(lái)說(shuō),一個(gè)爬蟲的工作流程可以分為以下三個(gè)步驟(以及每個(gè)步驟應(yīng)該處理的問(wèn)題)
第一步,發(fā)起網(wǎng)絡(luò)請(qǐng)求
怎樣處理需要登錄的操作?
反爬蟲的機(jī)制有哪些,如何避免反爬蟲?
如何用隊(duì)列批量處理網(wǎng)絡(luò)請(qǐng)求?
網(wǎng)絡(luò)請(qǐng)求中經(jīng)常用到的庫(kù)有哪些?
為什么要用IP代理,如何構(gòu)建自己的IP代理池?
你的UA庫(kù)、COOKIE池是怎樣的?
如何異步處理網(wǎng)絡(luò)請(qǐng)求?
如何科學(xué)的優(yōu)化網(wǎng)絡(luò)請(qǐng)求?
以上種種,為了不被反爬蟲機(jī)制干掉,所以我們要盡量模仿真實(shí)用戶的網(wǎng)絡(luò)請(qǐng)求。
第二步,解析獲取的數(shù)據(jù),提取你想要的內(nèi)容
如何提取目標(biāo)內(nèi)容,有哪些常用的庫(kù)?
如何獲取需要js渲染的網(wǎng)頁(yè)內(nèi)容?
如何處理分頁(yè)數(shù)據(jù)?
第三步,持久化,將數(shù)據(jù)存儲(chǔ)到文件系統(tǒng)或數(shù)據(jù)庫(kù)中
如何存儲(chǔ)到文件?
如何存儲(chǔ)到數(shù)據(jù)庫(kù)?
通過(guò)以上對(duì)爬蟲工作過(guò)程的分析,那么一個(gè)簡(jiǎn)單的爬蟲框架主要分成四個(gè)部分:
1、UrlQueue
URL管理器,對(duì)將要爬取的和已經(jīng)爬取的URL進(jìn)行管理。
2、Fetcher
網(wǎng)頁(yè)下載器,從UrlQueue中獲取一個(gè)URL,傳給網(wǎng)頁(yè)下載器,下載器將URL指向的網(wǎng)頁(yè)內(nèi)容下載下來(lái)。
3、Parser
網(wǎng)頁(yè)解析器,將Fether下載的內(nèi)容進(jìn)行解析,一方面獲取目標(biāo)數(shù)據(jù),另一方面獲取需要的URL,補(bǔ)充到UrlQueue中去。
4、Saver
持久化,將數(shù)據(jù)存儲(chǔ)到文件系統(tǒng),或者數(shù)據(jù)庫(kù)中。