首页 > 其他分享 >分布式爬虫

分布式爬虫

时间:2023-06-05 15:13:25浏览次数:28  
标签:url redis 爬虫 scrapy key 分布式

分布式

分布式的本质就如上期提到的一个概念:分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。这就是在说,把廉价的计算机堆到一起,通过程序控制,使其整体用起来像个高性能计算机,目的就是节约成本。

对于分布式爬虫系统来说,假设1台机器能10天爬完一个任务,如果部署10台机器,那么1天就会完成这个任务。这样就用可以接受的成本,让系统的效率提高了十倍。

实现方式

基于scrapy+redis(结合scrapy-redis组件)

scrapy-redis组件作用:

  -可以给原生的scrapy框架提供共享的管道和调度器

  -pip install scrapy-redis

新建工程

scrapy startproject FBS

cd FBS

scrapy genspider -t crawl fbspc www.xxx.com

实现流程

1.修改爬虫文件

#1.导包
from scrapy_redis.spiders import RedisCrawlSpider

#2.修改当前爬虫类的父类为RedisCrawlSpider

#3.将start_url替换成redis_keys属性,属性值为任意字符串
redis_key = "test"  # 可以被共享的调度器的名称,最终是需要将起始的url手动放置在redis_key表示的队列中

#4.进行数据解析

2.对setting.py进行配置

-指定调度器 

# 增加一个去重容器类的配置,作用使用redis的set集合来存储请求的指纹数据,从而实现请求去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
#使用scrapy-redis组件自己的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
#配置调度器是否要持久化,也就是的那个爬虫结束了,要不要清空Redis中请求队列和去重指纹的set。如果是True,表示要初九话,不清空数据,否则清空数据
SCHEDULER_PERSIST = True

-指定管道

ITEM_PIPELINES = {
    'scrapy_redis.pipelines.RedisPipeline':400
}

-指定redis

REDIS_HOST = '127.0.0.1'
PORT = 6379
REDIS_ENCODING = 'utf-8'
REDIS_PARAMS = {'password':'123456'}

3.配置redis的配置文件(redis.window.conf)

  -解除默认绑定

    -56行注释:#bind 127.0.0.1

  -关闭保护模式

    -75行:protected-mode no

4.启动redis服务和客户端

5.执行scrapy工程

   程序会停留在listening位置:等待起始uel加入

 6.向redis_key表示的队列中添加起始url

  需要在redis客户端执行如下命令:

    -lpush test https://wz.sun0769.com/political/index/politicsNewest?id=1&page=1  # test为redis_key,后面的url为自己添加的

 

标签:url,redis,爬虫,scrapy,key,分布式
From: https://www.cnblogs.com/xiongying4/p/17457681.html

相关文章

  • 分布式和为服务区别
    微服务介绍(史上最全)答疑|分布式和微服务的区别?   ......
  • C语言多线程爬虫代码示例
    使用C语言编写多线程爬虫能够同时处理多条数据,提高了爬虫的并发度和效率。在编写多线程爬虫时仍需要注意线程安全性和错误处理机制,并根据系统资源和目标网站的特点调整线程数和优化并发策略,以提高程序效率和稳定性。以下是一个使用C语言多线程编写的简单爬虫示例,实现了并发爬取多......
  • C语言写网络爬虫总体思路
    使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。但是,使用C语言编写爬虫也存在一些挑战。C语言的语法较为复杂,需要较高的......
  • C语言写网络爬虫总体思路
    使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。但是,使用C语言编写爬虫也存在一些挑战。C语言的语法较为复杂,需要较高......
  • Python网络爬虫对汽车团购报名的爬取及分析
    一、选题的背景(10分)现如今汽车已逐步进入家庭中,对于一些准备购入新车的家庭,犹豫不决,不知道现在市场上与车友们推荐的哪些车,此次爬虫项目将对网上的团购排名进行爬取,更能简单直观的让大家依据个人情况来挑选自己中意的车辆详情。二、设计方案(20分)主题式网络爬虫名称    ......
  • Hadoop伪分布式安装
    Hadoop伪分布式安装安装环境:Centos7.5,只少2核4G提前准备:Linux中要安装JDK8,Zookeeper-3.5.71.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.修改主机名Hadoop集群中,主机名中尽量不要出现-或者_vim/etc/hostname将原来的主机名删除,添加自己指定的主机名3.需......
  • 【获奖案例巡展】信创先锋之星——江西金发基于分布式数据库的互联网金融业务系统
    为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技星力量”星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量,目前已成功举办两届,收到了来自各界的积极参与。 第二......
  • 基于Selenium库的python爬虫脚本,爬取painterest上的图片
    基于Selenium库的python爬虫脚本,爬取painterest上的图片问题背景Pinterest是一个社交媒体平台,它提供了一个虚拟的个人兴趣画板,让用户可以收集和分享他们喜欢的图片、视频和链接。上面有许多优秀的图片供浏览和下载,但是一个个点图片下载非常麻烦。于是想要用Python语言写一个自......
  • Python爬虫入门六之Cookie的使用
     大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。为什么要使用Cookie呢?Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个......
  • 如何防止网站被爬虫爬取的几种办法
     今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢。对于如何防止网站被爬取,我想从以下几种方法去分析:1.基于程序本身去防止爬取:作为爬虫......