python 爬蟲——部署scrapy-redis分佈式爬蟲及部署分佈式爬蟲後但是隻能單機運行原因

1準備 :redis數據庫,Python的scrapy-redis包,[mysql數據庫]redis安裝目錄下redis.windows.conf 配置文件修改bind 0.0.0.0[或局域網內,外網的IP地址]

protected-mode no

2配置scrapy  settings文件設置設置

SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

 

ITEM_PIPELINES = {
    'scrapy_redis.pipelines.RedisPipeline': 300,
    # '其他'
}

 

REDIS_HOST = '192.168.216.94'
REDIS_PORT = 6379
[如果需要密碼則REDIS_PASSWORD=""]

3修改Spider 文件:

spider 文件裏導入from scrapy_redis.spiders import RedisSpider,並且讓爬蟲類繼承RedisSpider

取消start_urls,並在spider文件中設置redis_key ='你的redis的表名'

class JobboleSpider(RedisSpider):
    name = 'jobbole'
    allowed_domains = ['jobbole.com']
    # start_urls = ['http://blog.jobbole.com/all-posts/']
    # lpush jobbole:start_urls http://blog.jobbole.com/all-posts/
    redis_key = 'jobbole:start_urls'

4.運行

開啓服務(如沒配置redis環境變量需進入redis安裝目錄下)shift鍵+鼠標右鍵打開命令行,輸入redis-server redis.windows.conf

如啓動時遇見錯誤可以試一下redis-cli(如果bind的是127.0.0.1就可以不需要-h參數,其他地址就不行,如果) 然後shutdown,再次redis-server redis.windows.conf啓動服務。

換其他機器測試(其他機器不必打開redis服務)cmd下redis-cli -h IP,連接成功表示成功,然後傳輸源代碼,如果cmd能連接上redis但是運行scrapy時候卻報類似"拒絕"這種服務可以先檢查settings中redis的參數是否是因爲沒有密碼而有中括號中的redis://[root@IP:port].如果沒密碼去掉中括號內的字符即可。

(如果需要配置遠程mysql服務器的話需要現在mysql中設置一個可以遠程登錄的賬號:創建用戶create user myroot identified by '123456';賦予權限grant all privileges on *.* to 'myroot'@'%';)

開啓所有爬蟲,如爬蟲有類似"Telnet 127.0.0.1"字段則已成功大半,然後連接redis主機的redis服務器lpush jobbole:start_urls(spider中的redis_key) http://blog.jobbole.com/all-posts/(原本存放start_urls的地址),如果存入數據庫後爬蟲開始進行爬取,則成功。

注意:如果只是測試代碼的連通性,則每次運行完畢之後都要刪除dedis中的表del 表名即可,查詢所有表名的命令keys *.

分佈式爬蟲單機運行爬蟲(只有一個服務器運行)原因:下次更新

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章