分布式爬蟲的部署以及增量式爬蟲的作用

2021-10-05 08:23:58 字數 1559 閱讀 5523

- 分布式

- 概念:需要搭建乙個分布式的機群,然後在機群的每一台電腦中執行同一組程式,讓其對某乙個**的資料進行聯合分布爬取。

- 原生的scrapy框架是不可以實現分布式?

- 因為排程器不可以被共享

- 管道不可以被共享

- 如何實現分布式?

- scrapy+scrapy_redis實現分布式

- scrapy-redis元件的作用是什麼?

- 可以提供可被共享的排程器和管道

- 特性:資料只可以儲存到redis資料庫。

- 分布式的實現流程:

- 1.pip install scrapy-redis

- 2.建立工程

- 3. cd 工程目錄中

- 4.建立爬蟲檔案(a.建立基於spider的爬蟲檔案 b.建立crawlspider的爬蟲檔案)

- 5.修改爬蟲類:

- 導報:from scrapy_redis.spiders import rediscrawlspider

- 修改當前爬蟲類的父類為rediscrawlspider

- allowed_domains和start_urls刪除

- 新增乙個新屬性:redis_key = 'fbsqueue',表示的是可以被共享的排程器佇列的名稱

- 編寫爬蟲類的其他操作(常規操作)

- 6.settings配置檔案的配置

- ua偽裝

- robots

- 管道的指定:

item_pipelines =

- 指定排程器:

# 增加了乙個去重容器類的配置, 作用使用redis的set集合來儲存請求的指紋資料, 從而實現請求去重的持久化

dupefilter_class = "scrapy_redis.dupefilter.rfpdupefilter"

# 使用scrapy-redis元件自己的排程器

scheduler = "scrapy_redis.scheduler.scheduler"

# 配置排程器是否要持久化, 也就是當爬蟲結束了, 要不要清空redis中請求佇列和去重指紋的set。如果是true, 就表示要持久化儲存, 就不清空資料, 否則清空資料

scheduler_persist = true

- 指定redis資料庫

redis_host = 'redis服務的ip位址'

redis_port = 6379

- redis的配置檔案進行配置redis.windows.conf:

- 關閉預設繫結:56line:#bind 127.0.0.1

- 關閉保護模式:75line:protected-mode no

- 啟動redis的服務端和客戶端:

- redis-server.exe redis.windows.conf

- redis-cli

- 啟動程式:

scrapy runspider ***.py

- 向排程器的佇列中扔入乙個起始的url:

- 佇列是存在於redis中

- 開啟redis的客戶端: lpush fbsqueue

爬蟲 分布式爬蟲

爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...

分布式爬蟲

乙個基於scrapy redis的分布式爬蟲模板,在scrapy redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。scrapy redis windows ubuntu sudo apt get install redis ...

分布式爬蟲

修改普通爬蟲專案為分布式爬蟲 1.主爬蟲檔案myspider.py 做如下修改,其他不做修改 import scrapy from items import myitem 匯入資料模型 from scrapy redis.spiders import redisspider 匯入scrapy red...