分布式爬蟲原理
什么是分布式爬蟲:
額,這個問題呢,我這樣解釋,例如爬取網站內的二級網站,我們就需要獲取網站中的二級、三級...很多個網站,那么我們如果用自己一臺主機爬取明顯效率很低,這個時候我們就需要其他主機的幫助了,這個時候我們就將作為Master,為其他主機Slaver提供url的同時,啟動程序,沒錯,我們的工作就這么多,而Slaver主機的作用就是接收url,解析并獲取想要的數據。。。。
那么問題來了,我們如何將Master抓取到的網站分給別的主機呢?
那就需要數據庫了,而且是基于內存的數據庫,redis等。
redis安裝配置:http://www.runoob.com/redis/r...
配置中需要將redis.conf文件做簡單的修改:將bind 127.0.0.1和rdbcompression yes注釋掉。
最后如何單線程抓取網頁呢?
你可以和自己的小伙伴試一試一個Master和多個Slaver一起獲取下bt影視網的網頁url,很有意思:
""" 爬蟲: for url in urls: r = requests.get(url) html_doc = r.text 多線程爬蟲: urls( 隊列 內容) work( 從隊列中獲取url --> 發送請求 --> 解析response -- >保存數據) 創建多個線程,每個線程啟動一個work,從而實現并發,提高爬蟲效率 分布式爬蟲: urls(保存到redis中,因為redis可被多臺電腦訪問,從而實現分布式) 每臺電腦從redis內存中獲取url-->發送請求 --> 解析response -- >保存數據 目標 : 使用分布式爬蟲,爬去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)
爬蟲,,從入門到放棄,,,哈哈哈哈哈哈
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42079.html
摘要:相關鏈接官方文檔安裝推薦使用安裝,命令如下命令執行完畢之后即可完成安裝。的安裝是一個分布式管理模塊,本節來介紹一下的安裝方式。如果沒有錯誤報出,則證明庫已經安裝好了。上一篇文章網絡爬蟲實戰部署相關庫下一篇文章網絡爬蟲實戰爬蟲基礎基本原理 上一篇文章:Python3網絡爬蟲實戰---13、部署相關庫ScrapydClient、ScrapydAPI下一篇文章:Python3網絡爬蟲實戰--...
摘要:阻塞,非阻塞首先,阻塞這個詞來自操作系統的線程進程的狀態模型網絡爬蟲基本原理一后端掘金網絡爬蟲是捜索引擎抓取系統的重要組成部分。每門主要編程語言現未來已到后端掘金使用和在相同環境各加載多張小圖片,性能相差一倍。 2016 年度小結(服務器端方向)| 掘金技術征文 - 后端 - 掘金今年年初我花了三個月的業余時間用 Laravel 開發了一個項目,在此之前,除了去年換工作準備面試時,我并...
摘要:阻塞,非阻塞首先,阻塞這個詞來自操作系統的線程進程的狀態模型網絡爬蟲基本原理一后端掘金網絡爬蟲是捜索引擎抓取系統的重要組成部分。每門主要編程語言現未來已到后端掘金使用和在相同環境各加載多張小圖片,性能相差一倍。 2016 年度小結(服務器端方向)| 掘金技術征文 - 后端 - 掘金今年年初我花了三個月的業余時間用 Laravel 開發了一個項目,在此之前,除了去年換工作準備面試時,我并...
摘要:分布式爬蟲框架詳解隨著互聯網技術的發展與應用的普及,網絡作為信息的載體,已經成為社會大眾參與社會生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應。 scrapy-redis分布式爬蟲框架詳解 隨著互聯網技術的發展與應用的普及,網絡作為信息的載體,已經成為社會大眾參與社會生活的一種重要信息渠道。由于互聯網是開放的,每個人都可以在網絡上...
閱讀 3257·2023-04-26 01:31
閱讀 1898·2023-04-25 22:08
閱讀 3444·2021-09-01 11:42
閱讀 2828·2019-08-30 12:58
閱讀 2171·2019-08-29 18:31
閱讀 2435·2019-08-29 17:18
閱讀 3069·2019-08-29 13:01
閱讀 2555·2019-08-28 18:22