分布式爬蟲原理
什么是分布式爬蟲:
額,這個問題呢,我這樣解釋,例如爬取網(wǎng)站內(nèi)的二級網(wǎng)站,我們就需要獲取網(wǎng)站中的二級、三級...很多個網(wǎng)站,那么我們?nèi)绻米约阂慌_主機爬取明顯效率很低,這個時候我們就需要其他主機的幫助了,這個時候我們就將作為Master,為其他主機Slaver提供url的同時,啟動程序,沒錯,我們的工作就這么多,而Slaver主機的作用就是接收url,解析并獲取想要的數(shù)據(jù)。。。。
那么問題來了,我們?nèi)绾螌aster抓取到的網(wǎng)站分給別的主機呢?
那就需要數(shù)據(jù)庫了,而且是基于內(nèi)存的數(shù)據(jù)庫,redis等。
redis安裝配置:http://www.runoob.com/redis/r...
配置中需要將redis.conf文件做簡單的修改:將bind 127.0.0.1和rdbcompression yes注釋掉。
最后如何單線程抓取網(wǎng)頁呢?
你可以和自己的小伙伴試一試一個Master和多個Slaver一起獲取下bt影視網(wǎng)的網(wǎng)頁url,很有意思:
""" 爬蟲: for url in urls: r = requests.get(url) html_doc = r.text 多線程爬蟲: urls( 隊列 內(nèi)容) work( 從隊列中獲取url --> 發(fā)送請求 --> 解析response -- >保存數(shù)據(jù)) 創(chuàng)建多個線程,每個線程啟動一個work,從而實現(xiàn)并發(fā),提高爬蟲效率 分布式爬蟲: urls(保存到redis中,因為redis可被多臺電腦訪問,從而實現(xiàn)分布式) 每臺電腦從redis內(nèi)存中獲取url-->發(fā)送請求 --> 解析response -- >保存數(shù)據(jù) 目標 : 使用分布式爬蟲,爬去http://www.btbtdy.net/btfl/dy30.html中所有頁 部署: Master端不需要任何修改(Master必須安裝redis server) Slaver端需要修改兩處: 1) 把rds = Redis("127.0.0.1",6379)修改成 rds = Redis("master的ip",6379) 2) 把第64行的代碼start_request()注釋掉 """ from redis import Redis import requests # pip install redis # 存儲 urls REDIS_KEY = "btdy:urls" rds = Redis("127.0.0.1",6379) def fetch(url): """ 下載頁面,如果下載成功,返回response對象,否則返回None :param url:待爬取的url :return:返回response對象或者None """ r = requests.get(url) if r.status_code == 200: return r return None def start_request(): """ 獲取電視劇所有頁的地址,并把地址push到REDIS_KEY中 :return: """ start_url = "http://www.btbtdy.net/btfl/dy30.html" urls = ["http://www.btbtdy.net/btfl/dy30-{0}.html".format(str(page+1)) for page in range(62)] rds.lpush(REDIS_KEY,*urls) if __name__ == "__main__": # 從redis中的REDIS_URLS中獲取url start_request() while True: _, url = rds.blpop(REDIS_KEY) fetch(url)
爬蟲,,從入門到放棄,,,哈哈哈哈哈哈
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42079.html
摘要:相關(guān)鏈接官方文檔安裝推薦使用安裝,命令如下命令執(zhí)行完畢之后即可完成安裝。的安裝是一個分布式管理模塊,本節(jié)來介紹一下的安裝方式。如果沒有錯誤報出,則證明庫已經(jīng)安裝好了。上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)部署相關(guān)庫下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)爬蟲基礎(chǔ)基本原理 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---13、部署相關(guān)庫ScrapydClient、ScrapydAPI下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)--...
摘要:阻塞,非阻塞首先,阻塞這個詞來自操作系統(tǒng)的線程進程的狀態(tài)模型網(wǎng)絡(luò)爬蟲基本原理一后端掘金網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。每門主要編程語言現(xiàn)未來已到后端掘金使用和在相同環(huán)境各加載多張小圖片,性能相差一倍。 2016 年度小結(jié)(服務(wù)器端方向)| 掘金技術(shù)征文 - 后端 - 掘金今年年初我花了三個月的業(yè)余時間用 Laravel 開發(fā)了一個項目,在此之前,除了去年換工作準備面試時,我并...
摘要:阻塞,非阻塞首先,阻塞這個詞來自操作系統(tǒng)的線程進程的狀態(tài)模型網(wǎng)絡(luò)爬蟲基本原理一后端掘金網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。每門主要編程語言現(xiàn)未來已到后端掘金使用和在相同環(huán)境各加載多張小圖片,性能相差一倍。 2016 年度小結(jié)(服務(wù)器端方向)| 掘金技術(shù)征文 - 后端 - 掘金今年年初我花了三個月的業(yè)余時間用 Laravel 開發(fā)了一個項目,在此之前,除了去年換工作準備面試時,我并...
摘要:分布式爬蟲框架詳解隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會大眾參與社會生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應(yīng)。 scrapy-redis分布式爬蟲框架詳解 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會大眾參與社會生活的一種重要信息渠道。由于互聯(lián)網(wǎng)是開放的,每個人都可以在網(wǎng)絡(luò)上...
閱讀 3302·2023-04-26 01:31
閱讀 1922·2023-04-25 22:08
閱讀 3512·2021-09-01 11:42
閱讀 2857·2019-08-30 12:58
閱讀 2212·2019-08-29 18:31
閱讀 2462·2019-08-29 17:18
閱讀 3092·2019-08-29 13:01
閱讀 2580·2019-08-28 18:22