為了實現微博資料一天一千萬+的資料量,分布式爬蟲是必須的,之前有提到過,但是沒有寫,現在來補全
廢話不多說,分布式爬蟲的優點相信大家都知道,就不多說了,
在將普通的爬蟲改為分布式,只需要改兩點即可,非常簡單,不要被嚇到
第乙個:將單機爬蟲繼承的類改為分布式爬蟲類,
from scrapy_redis.spiders import redisspider
class tagweibospider(redisspider): <--------------redisspider
在這個類中加入乙個類似開關的東西來控制分布式爬蟲,
redis_key = 『tag_weibo:start_url』
當我們沒有傳送這個的時候,分布式爬蟲是不會跑的,就會一直停留在這裡,等待我們傳送第乙個請求,
其中有個allowed_domains = [『weibo.cn』],這個就是允許你爬蟲的範圍,可以注釋掉,注釋掉之後起始爬蟲的url就可以亂髮,如果設定了這個,則只能傳送這個來作為起始的url,看自己,其實注釋掉完全無所謂
第二個:settings中的配置,
因為改為了分布式,所以排程儲存等都需要換為分布式的一些東西
scheduler = 『scrapy_redis.scheduler.scheduler』 # 排程
scheduler_persist = true #
scheduler_queue_class = 『scrapy_redis.queue.spiderstack』 #儲存佇列,有queue,stack ,spiderpriorityqueue,適當選擇適合 自己的
dupefilter_class = 『scrapy_redis.dupefilter.rfpdupefilter』 # 過濾器,存指紋
因為我們將所有的請求和指紋都存在了redis中,所以還需要指定redis一些列東西
redis_host = 『』 #主機位址
redis_port = # 埠
redis_params = # 選擇redis中存的資料庫
到此為止,上述所有的配置就已經完成,啟動幾個爬蟲之後,爬蟲寶寶們就會一直等待,當我們在對應資料庫中傳送redis_key之後,其中乙個爬蟲寶寶接受到請求之後,就會開始跑起來了
select 2
lpush tag_weibo:start_url # 由於我設定了domain,所以這個位置就只能用, 其他的請求不行,這樣我們的爬蟲寶寶就可以動起來了 = =
爬蟲 分布式爬蟲
爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...
分布式爬蟲
乙個基於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...