亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

分布式爬蟲原理

LeexMuller / 3166人閱讀

分布式爬蟲原理

什么是分布式爬蟲:
額,這個(gè)問題呢,我這樣解釋,例如爬取網(wǎng)站內(nèi)的二級(jí)網(wǎng)站,我們就需要獲取網(wǎng)站中的二級(jí)、三級(jí)...很多個(gè)網(wǎng)站,那么我們?nèi)绻米约阂慌_(tái)主機(jī)爬取明顯效率很低,這個(gè)時(shí)候我們就需要其他主機(jī)的幫助了,這個(gè)時(shí)候我們就將作為Master,為其他主機(jī)Slaver提供url的同時(shí),啟動(dòng)程序,沒錯(cuò),我們的工作就這么多,而Slaver主機(jī)的作用就是接收url,解析并獲取想要的數(shù)據(jù)。。。。


那么問題來了,我們?nèi)绾螌aster抓取到的網(wǎng)站分給別的主機(jī)呢?

那就需要數(shù)據(jù)庫(kù)了,而且是基于內(nèi)存的數(shù)據(jù)庫(kù),redis等。
redis安裝配置:http://www.runoob.com/redis/r...
配置中需要將redis.conf文件做簡(jiǎn)單的修改:將bind 127.0.0.1和rdbcompression yes注釋掉。


最后如何單線程抓取網(wǎng)頁呢?

你可以和自己的小伙伴試一試一個(gè)Master和多個(gè)Slaver一起獲取下bt影視網(wǎng)的網(wǎng)頁url,很有意思:

"""
爬蟲:
    for  url  in urls:
        r = requests.get(url)
        html_doc = r.text

多線程爬蟲:

    urls( 隊(duì)列  內(nèi)容)

    work(  從隊(duì)列中獲取url  --> 發(fā)送請(qǐng)求  --> 解析response -- >保存數(shù)據(jù))

    創(chuàng)建多個(gè)線程,每個(gè)線程啟動(dòng)一個(gè)work,從而實(shí)現(xiàn)并發(fā),提高爬蟲效率


分布式爬蟲:
    urls(保存到redis中,因?yàn)閞edis可被多臺(tái)電腦訪問,從而實(shí)現(xiàn)分布式)
    每臺(tái)電腦從redis內(nèi)存中獲取url-->發(fā)送請(qǐng)求 --> 解析response -- >保存數(shù)據(jù)

目標(biāo) :
    使用分布式爬蟲,爬去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


# 存儲(chǔ) urls
REDIS_KEY = "btdy:urls"

rds = Redis("127.0.0.1",6379)

def fetch(url):
    """
    下載頁面,如果下載成功,返回response對(duì)象,否則返回None
    :param url:待爬取的url
    :return:返回response對(duì)象或者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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42079.html

相關(guān)文章

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

    摘要:相關(guān)鏈接官方文檔安裝推薦使用安裝,命令如下命令執(zhí)行完畢之后即可完成安裝。的安裝是一個(gè)分布式管理模塊,本節(jié)來介紹一下的安裝方式。如果沒有錯(cuò)誤報(bào)出,則證明庫(kù)已經(jīng)安裝好了。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)部署相關(guān)庫(kù)下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬蟲基礎(chǔ)基本原理 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---13、部署相關(guān)庫(kù)ScrapydClient、ScrapydAPI下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)--...

    nihao 評(píng)論0 收藏0
  • 后端知識(shí)拓展 - 收藏集 - 掘金

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

    CoderBear 評(píng)論0 收藏0
  • 后端知識(shí)拓展 - 收藏集 - 掘金

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

    Carl 評(píng)論0 收藏0
  • scrapy-redis布式爬蟲框架詳解

    摘要:分布式爬蟲框架詳解隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會(huì)大眾參與社會(huì)生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請(qǐng)求及響應(yīng)。 scrapy-redis分布式爬蟲框架詳解 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會(huì)大眾參與社會(huì)生活的一種重要信息渠道。由于互聯(lián)網(wǎng)是開放的,每個(gè)人都可以在網(wǎng)絡(luò)上...

    myeveryheart 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

LeexMuller

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<