成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

分布式爬蟲原理

LeexMuller / 3144人閱讀

分布式爬蟲原理

什么是分布式爬蟲:
額,這個問題呢,我這樣解釋,例如爬取網(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)文章

  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---14、部署相關(guān)庫的安裝:Scrapyrt、Gerapy

    摘要:相關(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)--...

    nihao 評論0 收藏0
  • 后端知識拓展 - 收藏集 - 掘金

    摘要:阻塞,非阻塞首先,阻塞這個詞來自操作系統(tǒng)的線程進程的狀態(tài)模型網(wǎng)絡(luò)爬蟲基本原理一后端掘金網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。每門主要編程語言現(xiàn)未來已到后端掘金使用和在相同環(huán)境各加載多張小圖片,性能相差一倍。 2016 年度小結(jié)(服務(wù)器端方向)| 掘金技術(shù)征文 - 后端 - 掘金今年年初我花了三個月的業(yè)余時間用 Laravel 開發(fā)了一個項目,在此之前,除了去年換工作準備面試時,我并...

    CoderBear 評論0 收藏0
  • 后端知識拓展 - 收藏集 - 掘金

    摘要:阻塞,非阻塞首先,阻塞這個詞來自操作系統(tǒng)的線程進程的狀態(tài)模型網(wǎng)絡(luò)爬蟲基本原理一后端掘金網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。每門主要編程語言現(xiàn)未來已到后端掘金使用和在相同環(huán)境各加載多張小圖片,性能相差一倍。 2016 年度小結(jié)(服務(wù)器端方向)| 掘金技術(shù)征文 - 后端 - 掘金今年年初我花了三個月的業(yè)余時間用 Laravel 開發(fā)了一個項目,在此之前,除了去年換工作準備面試時,我并...

    Carl 評論0 收藏0
  • scrapy-redis布式爬蟲框架詳解

    摘要:分布式爬蟲框架詳解隨著互聯(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ò)上...

    myeveryheart 評論0 收藏0

發(fā)表評論

0條評論

LeexMuller

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<