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