Python爬虫之强化(分布式爬取)

Scrapy分布式爬虫

概念

scrapy分布式爬虫可以理解为在多台服务器(电脑)共同爬取数据,对于爬取的数据量很大的时候,建议使用分布式爬虫。在使用分布式爬虫过程中,往往还需要结合数据库,数据库会存储已爬取的数据,则不会再重复爬取。


Scrapy-redis分布式爬虫

第一步 (修改参数)
#在使用scrapy-redis分布式爬虫的时候,我们只需修改scrapy项目文件中的部分参数即可实现分布式爬虫

## settings.py文件 ##
#定义调度器 (新增)
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
#定义去重过滤器 (新增)
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
#设置redis连接 (新增)
REDIS_URL = "redis://:Redis的密码@带有Redis数据库的服务器地址:6379"
#修改ITEM_PIPELINES信息 (修改)
ITEM_PIPELINES = {'scrapy_redis.pipelines.RedisPipeline':200}

## spider.py文件 (该文件名由自己创建爬虫的时候所生成的文件) ##
#导入scrapy_redis库中的RedisSpider类
from scrapy_redis.spiders import RedisSpider
#继承RedisSpider类,修改class HomeSpider(scrapy.Spider)
class HomeSpider(RedisSpider):
    pass

第二步 (复制项目文件到每台服务器)

把scrapy项目文件里面部分参数修改好之后,只需把该项目文件放到服务器即可,并且在服务器使用命令scrapy crawl 爬虫名 ,启动爬虫,爬虫即可进入等待状态,因为我们还没有给爬虫初始url信息,所以爬虫会处于等待状态


第三步(在带有Redis数据库的服务器构建初始url信息)

一般Redis默认安装路径为C:\Program Files\Redis,只需打开redis-cli,输入命令构建信息,也就是爬虫初始url信息,该命令为lpush 爬虫名:start_urls 爬取的初始网址,输入完该命令,所有处于等待状态的爬虫将会共同爬取数据

lpush pyml:start_urls https://xxx.com

第四步(可选 数据可存进Mysql数据库里面)
#构建新的Pipeline,把数据存储进mysql里面
class MYSQLDBPipeline(object):
    
    #爬虫启动时候构建连接mysql的信息
    def open_spider(self,spider):
        self.conn = pymysql.connect(host="127.0.0.1",user="root",passwd="root",database="data",port=3306)
        self.cursorer = self.conn.cursor()
        
	#把数据写入mysql里面
    def process_item(self,item,spider):
        self.cursorer.execute("insert into novel(name,author,type) values('{}','{}','{}')".format(item["name"],item["author"],item["type"]))
        return item
    
	#爬虫关闭时候关闭数据库连接并且提交数据
    def close_spider(self,spider):
        self.conn.commit()
        self.conn.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值