分布式爬虫的原理与流程

           纯属笔记

  • 分布式:  一台电脑运行一个爬虫程序称为单机爬虫,将同一个爬虫放在多台电脑上或者同一台电脑的多个虚拟环境中,且同时启动这个爬虫就称为发布式
  • 为什么要部署分布式爬虫:
    • 当要进行大规模数据爬取时,一台电脑的爬取速度达不到要求,可以利用多台电脑来提高爬虫的爬取速度
  • 配置

    • pip install scrapy-redis (如果使用虚拟环境先进入虚拟环境再安装包)
    • scrapy中配置   settings :

      • #     更换scrapy内置调度器文件, 使用scrapy_redis包中的scheduler调度器文件
      • SCHEDULER = "scrapy_redis.scheduler.Scheduler"
      • #    更换scrapy内置的去重文件,使用scrapy_redis包中的dupefilter文件

      • DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

      • 配置redis_url (主机(用于分配url给从机去爬取信息和用于数据存储) 的IP)

      • REDIS_URL = 'redis://root:@***.***.***.***:***(IP加端口)'

    • 主机配置redis:

      • redis默认只支持localhost的本地连接,  远程连接需要配置  找到redis安装包   找到redis.windows.conf文件
      • 将 bind 127.0.0.1 改成REDIS_URL中配置的IP
      • 将protected-mode yes  中 yes该为no   关闭保护模式(在bind下面  看结尾部分)
      • 修改完成后必须将redis服务从计算机服务(在菜单[win]中搜索 '服务' 打开后可查看redis服务情况)  中删除,然后重新注册到服务中(更新上面修改的配置  必须删除再重新注册)
      • Windows下redis  (redis安装包文件中  地址栏 输入cmd) 
        • redis-server --service-stop       停止服务  
        • redis-server --service-uninstall    卸载redis服务
        • redis-server --service -install redis.windows.conf   注册为Windows服务(配置后redis可自启)
        • redis-server --service-start     手动启动
    • 爬虫文件:
      ​​​​​​​

      • from scrapy_redis.spiders import RedisSpider
      • 注释start_urls(由主机分配)
      • 添加  redis_key = '****:start_urls'
      • 更改***Spider()参数为RedisSpider
    • 配置mysql:

      • 主 :
        • mysql -uroot  -p    换行输入密码
        • create user "user"@"%" identified by "123456";
        • GRANT ALL privileges ON *.* TO 'user'@'%';
        • 使用刚创建的账号密码在mysql中测试
        • 根据mysql配置修改settings中的mysql数据库相关配置
    • 启动redis客户端 输入

      • Redis-cli -h IP -p 端口       然后开启每台电脑的爬虫

      • Ipush jobbole:start_urls http://blog.fobbole.com/all-posts/     开始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CrawlSpider是Scrapy框架的一个子框架,它是一个基于规则的爬虫框架,可以用来从Web页面中提取数据。同时,CrawlSpider支持分布式爬取,可以在多台计算机上运行,从而加快爬取速度。 MongoDB是一个NoSQL数据库,它支持高性能的数据读写操作,并且可以支持分布式部署。在使用CrawlSpider分布式爬虫时,可以将爬取到的数据存储到MongoDB数据库中,从而实现数据的持久化存储和管理。 使用CrawlSpider分布式爬虫与MongoDB的步骤如下: 1. 在Scrapy项目中安装pymongo库:`pip install pymongo` 2. 在Scrapy项目的settings.py文件中添加MongoDB的配置: ``` MONGO_URI = 'mongodb://localhost:27017/' MONGO_DATABASE = 'mydatabase' ``` 3. 在Spider中使用MongoDB的API将数据存储到数据库中,例如: ``` from pymongo import MongoClient class MySpider(CrawlSpider): name = 'myspider' def __init__(self): self.client = MongoClient() self.db = self.client['mydatabase'] def parse(self, response): item = {} item['title'] = response.xpath('//title/text()').extract_first() item['url'] = response.url self.db['mycollection'].insert_one(item) return item ``` 在这个例子中,我们使用MongoClient连接到本地的MongoDB数据库,并在parse方法中使用insert_one将数据存储到名为mycollection的集合中。 4. 在命令行中运行分布式爬虫,例如: ``` scrapy crawl myspider -s JOBDIR=crawls/myspider-1 ``` 在这个命令中,我们使用JOBDIR参数指定了爬虫任务的保存路径,以便在分布式爬虫中断后,可以恢复之前的爬取进度。 5. 在另一台计算机上运行分布式爬虫,例如: ``` scrapy crawl myspider -s JOBDIR=crawls/myspider-2 ``` 在这个命令中,我们使用JOBDIR参数指定了不同的保存路径,以便在不同的计算机上运行爬虫任务。 通过以上步骤,我们可以使用CrawlSpider分布式爬虫将数据存储到MongoDB数据库中,实现高效的数据爬取和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值