自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

手把手教你寫網(wǎng)絡(luò)爬蟲(2):迷你爬蟲架構(gòu)-通用網(wǎng)絡(luò)爬蟲

開發(fā) 后端
對(duì)于有一定基礎(chǔ)的讀者,請(qǐng)不要著急,以后我們會(huì)學(xué)習(xí)主流的開源框架,打造出一個(gè)強(qiáng)大專業(yè)的爬蟲系統(tǒng)!不過在此之前,要繼續(xù)打好基礎(chǔ),本期我們先介紹爬蟲的種類,然后選取最典型的通用網(wǎng)絡(luò)爬蟲,為其設(shè)計(jì)一個(gè)迷你框架。有了自己對(duì)框架的思考后,再學(xué)習(xí)復(fù)雜的開源框架就有頭緒了。

[[229264]]

介紹 

大家好!回顧上一期,我們?cè)诮榻B了爬蟲的基本概念之后,就利用各種工具橫沖直撞的完成了一個(gè)小爬蟲,目的就是猛、糙、快,方便初學(xué)者上手,建立信心。對(duì)于有一定基礎(chǔ)的讀者,請(qǐng)不要著急,以后我們會(huì)學(xué)習(xí)主流的開源框架,打造出一個(gè)強(qiáng)大專業(yè)的爬蟲系統(tǒng)!不過在此之前,要繼續(xù)打好基礎(chǔ),本期我們先介紹爬蟲的種類,然后選取最典型的通用網(wǎng)絡(luò)爬蟲,為其設(shè)計(jì)一個(gè)迷你框架。有了自己對(duì)框架的思考后,再學(xué)習(xí)復(fù)雜的開源框架就有頭緒了。 

今天我們會(huì)把更多的時(shí)間用在思考上,而不是一根筋的coding。用80%的時(shí)間思考,20%的時(shí)間敲鍵盤,這樣更有利于進(jìn)步。  

[[229265]]

語言&環(huán)境 

語言:帶足彈藥,繼續(xù)用Python開路!

   

 

 [[229267]]

 

  

  

 

一個(gè)迷你框架 

下面以比較典型的通用爬蟲為例,分析其工程要點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)一個(gè)迷你框架。架構(gòu)圖如下:

 

代碼結(jié)構(gòu):

 

config_load.py    配置文件加載 

crawl_thread.py    爬取線程 

mini_spider.py    主線程 

spider.conf    配置文件 

url_table.py    url隊(duì)列、url表 

urls.txt    種子url集合 

webpage_parse.py    網(wǎng)頁分析 

webpage_save.py    網(wǎng)頁存儲(chǔ) 

看看配置文件里有什么內(nèi)容: 

spider.conf

 

 

 

 

  

url_table.py 

  

Step 3. 記錄哪些網(wǎng)頁已經(jīng)下載過的小本本——URL表。 

在互聯(lián)網(wǎng)上,一個(gè)網(wǎng)頁可能被多個(gè)網(wǎng)頁中的超鏈接所指向。這樣在遍歷互聯(lián)網(wǎng)這張圖的時(shí)候,這個(gè)網(wǎng)頁可能被多次訪問到。為了防止一個(gè)網(wǎng)頁被下載和解析多次,需要一個(gè)URL表記錄哪些網(wǎng)頁已經(jīng)下載過。再遇到這個(gè)網(wǎng)頁的時(shí)候,我們就可以跳過它。 

crawl_thread.py

 

 

 

  

Step 5. 頁面分析模塊 

從網(wǎng)頁中解析出URLs或者其他有用的數(shù)據(jù)。這個(gè)是上期重點(diǎn)介紹的,可以參考之前的代碼。 

Step 6. 頁面存儲(chǔ)模塊 

保存頁面的模塊,目前將文件保存為文件,以后可以擴(kuò)展出多種存儲(chǔ)方式,如mysql,mongodb,hbase等等。 

webpage_save.py

 

寫到這里,整個(gè)框架已經(jīng)清晰的呈現(xiàn)在大家眼前了,千萬不要小看它,不管多么復(fù)雜的框架都是在這些基本要素上擴(kuò)展出來的。 

下一步 

基礎(chǔ)知識(shí)的學(xué)習(xí)暫時(shí)告一段落,希望能夠幫助大家打下一定的基礎(chǔ)。下期開始為大家介紹強(qiáng)大成熟的爬蟲框架Scrapy,它提供了很多強(qiáng)大的特性來使得爬取更為簡單高效,更多精彩,敬請(qǐng)期待! 

責(zé)任編輯:龐桂玉 來源: Python開發(fā)者
相關(guān)推薦

2018-05-14 16:34:08

Python網(wǎng)絡(luò)爬蟲Scrapy

2018-05-22 15:30:30

Python網(wǎng)絡(luò)爬蟲分布式爬蟲

2018-05-16 13:50:30

Python網(wǎng)絡(luò)爬蟲Scrapy

2018-05-16 15:46:06

Python網(wǎng)絡(luò)爬蟲PhantomJS

2018-05-22 16:28:46

Python網(wǎng)絡(luò)爬蟲URL去重

2018-05-14 14:02:41

Python爬蟲網(wǎng)易云音樂

2020-07-10 08:24:18

Python開發(fā)工具

2021-09-01 14:49:48

curl2pypython工具

2021-01-30 10:37:18

ScrapyGerapy網(wǎng)絡(luò)爬蟲

2021-04-01 09:02:38

Python小說下載網(wǎng)絡(luò)爬蟲

2021-11-09 09:01:36

Python網(wǎng)絡(luò)爬蟲Python基礎(chǔ)

2022-03-30 09:11:00

Python網(wǎng)絡(luò)爬蟲

2020-11-10 09:11:02

采集數(shù)據(jù)

2018-02-23 14:30:13

2018-05-09 09:44:51

Java分布式系統(tǒng)

2022-09-20 07:02:20

網(wǎng)絡(luò)爬蟲反爬蟲

2023-03-27 08:28:57

spring代碼,starter

2023-06-01 13:15:23

2009-12-24 13:52:57

網(wǎng)絡(luò)接入控制解決方案

2024-11-27 06:31:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)