zoukankan      html  css  js  c++  java
  • 分布式爬虫scrapy-redis

    第一步 下载scrapy模块:

      pip install scrapy-redis

    第二步 创建项目

      在终端/cmd进入创建项目的目录: 

    cd  路径:
    
    scrapy startproject douban(项目名)

      导入到pycharm中

    第三步 创建爬虫类

      1.在terminal中进入项目中的spiders目录:

      输入scrapy genspider douban_spider movie.douban.com(爬虫,爬取域的范围)

    第四步 设置

      非分布式爬虫设置:
    
      1.将ROBOTSTXT_OBEY = True 改为 False
    
      2.打开管道:
    ITEM_PIPELINES = {
       'JD_redis.pipelines.JdRedisPipeline': 300,
        'scrapy_redis.pipelines.RedisPipeline': 400,  # 分布式爬虫中添加
    }
       3.打开该设置并修改: 
    DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    }
      4 .添加下面设置
    # 使用去scrapy-redis里的重组件,不使用scrapy默认的去重方式
    DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
    # 使用scrapy-redis里的调度器组件,不使用默认的调度器
    SCHEDULER = "scrapy_redis.scheduler.Scheduler"
    # 允许暂停,redis请求记录不丢失
    SCHEDULER_PERSIST = True
    # 默认的scrapy-redis请求队列形式(按优先级)
    SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
    #指定redis数据库的连接参数
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    第五步 编写项目(在原来的非分布式爬虫项目中修改)

       1.修改spider文件:

    原来的文件是:

    import scrapy
    from JD.items import JdItem
    class BookSpider(scrapy.Spider):
        name = 'book'
        # allowed_domains = ['jd.com','p.3.cn']
        start_urls = ['https://book.jd.com/booksort.html']

    修改为:

    import scrapy
    from scrapy_redis.spiders import RedisSpider
    from JD.items import JdItem
    class BookSpider(scrapy.Spider):
        name = 'book'
        allowed_domains = ['jd.com','p.3.cn']
        # start_urls = ['https://book.jd.com/booksort.html']
      redis_key = 'book:start_urls'  # book可以自己随意取
    
    只修改了两个地方,一个是继承类:由scrapy.Spider修改为RedisSpider
    
    然后start_url已经不需要了,修改为:redis_key = "xxxxx",其中,这个键的值暂时是自己取的名字,
    
    一般用项目名:start_urls来代替初始爬取的url。由于分布式scrapy-redis中每个请求都是从redis中取出来的,因此,在redis数据库中,设置一个redis_key的值,作为初始的url,scrapy就会自动在redis中取出redis_key的值,作为初始url,实现自动爬取.

     

      2.运行:

        在命令中输入: scrapy runspider douban_spider.py(爬虫文件名)

      3来到redirs客户端中,输入初始url   

    lpush books:start_urls https://book.jd.com/booksort.html
    

      

       

  • 相关阅读:
    matlab 函数库
    阿甘的珠宝 大数据博弈综合应用 SG函数 + 最后取为输或赢
    hdu 1536 博弈 SG函数(dfs)
    hdu 1907 John / 2509 Be the Winner 博弈 最后取完者为输
    深入理解 Nim 博弈
    SG函数模板 hdu 1848/1847/1849/1850/1851
    初始博弈 hdu 1846 Brave Game
    乘数密码 扩展欧几里得求逆元
    68.最大k乘积问题 (15分)
    第一次作业
  • 原文地址:https://www.cnblogs.com/Jokerguigui/p/11692629.html
Copyright © 2011-2022 走看看