分布式爬虫之大结局篇:基于之前三篇博客配置的环境,缺一不可,若是漏了哪一步安装步骤,则可能存在运行报错问题。话不多说,抓紧时间结束这最后的分布式爬虫挣扎。

操作环境: Windows10、Python3.6、Pycharm2019.3.1、VMware15、Xshell6

相关文章: 分布式爬虫(一):配置虚拟机
      分布式爬虫(二):配置安装Python以及redis
      分布式爬虫(三):scrapy之中国网库


目录

  • 一、scrapy-redis
    • 1.1、简介
    • 1.2、修改scrapy
    • 1.3、模块迁移
  • 二、virtualenv虚拟环境
    • 2.1、连接Xshell6
    • 2.2、安装virtualenv
  • 三、运行分布式项目
  • 四、项目总结

一、scrapy-redis

1.1、简介

  scrapy-redis是一个基于redis的scrapy组件,主要用于快速实现scrapy框架爬虫项目的分布式部署以及数据的采集,其原理如下图:

  scrapy-redis分布式爬取时启动多个服务端共享同一个redis队列的爬虫实例,多个爬虫实例将各自运行提取到或已请求的Requests在队列中统一进行登记,使得Scheduler在请求调度时能够对重复Requests进行过滤筛选,即保证已经由某一台爬虫实例请求过的Requests将不会再被其他爬虫实例重复请求。

  scrapy-redis爬虫实例以上一篇博客的中国网库为例,对商品数据进行数据采集。

  安装scrapy-redis

pip install scrapy-redis

1.2、修改scrapy

 要将一个Scrapy项目变成一个Scrapy-redis项目只需修改以下三点即可:

  1、将scrapy项目的爬虫文件spider_library.py中爬虫的类从scrapy.Spider变成scrapy_redis.spiders.RedisSpider;(或者是从scrapy.CrawlSpider变成scrapy_redis.spiders.RedisCrawlSpider。)

  2、将爬虫文件spider_library.py中的start_urls删掉,增加一个redis_key=“xxx”。这个redis_key是为了以后在redis中控制爬虫启动的。爬虫项目的第一个url,就是在redis中通过这个发送出去的

  3、在配置文件settings.py中添加如下配置:

# Scrapy-Redis相关配置
# 确保request存储到redis中
SCHEDULER = "scrapy_redis.scheduler.Scheduler"  # #指定队列# 确保所有爬虫共享相同去的去重指纹
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'     # #定义一个去重的类SCHEDULER_QUEUECLASS = 'scrapy_redis.queue.SpiderQueue'# 在redis中保持scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能
SCHEDULER_PERSIST = True# 设置连接redis信息
REDIS_HOST = '192.168.2.133' # 指定ip
REDIS_PORT = '6379'              # 端口号

1.3、模块迁移

  本次分布式爬虫项目小编打算使用一个本机Windows10系统 + 虚拟机Linux系统,所以爬虫项目文件代码已在windows10系统下写完,其项目所用到的模块也安装完全;若将此项目文件放到Linux系统中则无此项目所用到的模块。

  所以我们得使用命令pip freeze > requirements.txt将爬虫项目用到的模块迁移到requirements.txt文件中,以便Linux系统下载。

  第一步:cd切换到爬虫项目第一层文件名下;
  第二步:输入命令pip freeze > requirements.txt;或者Python -m pip freeze > requirements.txt即可。

如图所示:

二、virtualenv虚拟环境

  virtualenv优势:用来为一个应用创建一套“隔离”的Python运行环境,另外上线流程简单,大大减轻运维人员的出错率,比如每一个项目使用一个docker镜像,在镜像中去安装项目所需的环境,库版本等等

2.1、连接Xshell6

  打开VMware15软件,运行指定虚拟机,使用Xshell6软件连接虚拟机,查看是否连接成功:

2.2、安装virtualenv

安装步骤:
 1.安装虚拟环境

pip3 install virtualenv


 2.添加环境变量(否则创建虚拟环境的时候会出现:virtualenv 未找到命令。)
   (1)使用查找find / -name ‘virtualenv.py’ 是否存在

  (2)vi编辑文件/etc/profile;将内容PATH=$PATH:/usr/local/python3/bin写入文件最下面;Esc+;+Shift三键一起按,输入wq!(强制保存退出)。

vi /etc/profile


  (3)添加的进行生效命令source /etc/profile,最后查看是否添加成功echo $PATH

 3.创建虚拟环境spider:virtualenv -p python3 虚拟环境名

virtualenv -p python3 spider

 4.激活虚拟环境spider:source “虚拟环境名”/bin/activate

source spider/bin/activate

激活后,在控制台会有一个带有(spider)的标志,如下:

三、运行分布式项目

 至此,分布式爬虫项目需要用到的虚拟环境配置完成。

 接下来执行爬虫项目步骤:
  1、开启redis服务(注:cd切换到redis目录下)
   Windows系统下:redis-server.exe redis.windows.conf
   Linux系统下:redis-server

   连接redis数据库:redis-cli —> 连接本机
            redis-cli -h 192.168.2.133 -p 6379 —> 访问远程redis

  2、使用rz命令上传分布式爬虫项目文件压缩包。(注:若无此命令,即用yum install lrzsz下载插件)

  3、解压文件:China_library_reids.zip

unzip China_library_reids.zip


  4、下载之前迁移的项目库(requirements.txt)

pip3 install -r requirements.txt

  5、运行爬虫文件
   (1)、在爬虫服务器上,进入到爬虫文件所在的路径,然后输入命令:scrapy runspider [爬虫文件名]

scrapy runspider spider_library

进入等待传输开始爬取的url:

   (2)、在Redis服务器上,输入一个开始的url链接:

lpush spider_library:start_urls http://www.99114.com/


  6、双系统运行分布式爬虫项目,执行半小时:

查看数据量:25601条数据。

四、项目总结

  分布式爬虫项目带给目标网址的压力还是有的,刚刚持续爬了一个小时,才遭到中国网库的反爬机制:封ip。若有小伙伴想尝试分布式爬虫项目的话,可以自己上手实战,不过想要获取更多的数据量,还需购买代理ip,解决反爬措施。

  若两个爬虫实例不足以满足你的数据采集效率,可以在原先虚拟机的基础上克隆出几台完整链接虚拟机,修改配置网卡后一样可以执行爬虫项目。

  本次分布式爬虫项目到此结束,若有小伙伴有疑惑的地方,可在评论区留言,小编看到会尽快一一回复;此项目有需要改进的地方,也请大佬不吝赐教,感谢!

  “赠人玫瑰,手有余香”,看完的小伙伴记得点赞收藏,感谢!

  注:本项目仅用于学习用途,若用于商业用途,请自行负责!!

分布式爬虫(四):大结局相关推荐

  1. 2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云大学在线工作坊上线,原理精讲+实操演练,让你真正掌握云计算.大数据技能. 在第一批上线的课程中,有一个Python爬虫的 ...

  2. 【通用技术】2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会...

    网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取信息的程序或者脚本. 网络爬虫是互联网上进行信息采集的通用手段,在互联网的各个专业方向上都是不可或缺的底层技术支撑.本课程从爬 ...

  3. 爬虫总结(四)-- 分布式爬虫

    分布式爬虫的演习. 分布式爬虫问题其实也就是多台机器多个 spider 对 多个 url 的同时处理问题,怎样 schedule 这些 url,怎样汇总 spider 抓取的数据.最简单粗暴的方法就是 ...

  4. Python:从零搭建Redis-Scrapy分布式爬虫

    Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端 ...

  5. 从零搭建Redis-Scrapy分布式爬虫

    Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端 ...

  6. Win10+Python3.6配置Spark创建分布式爬虫

    介绍Spark在Win 10系统中的的安装.配置以及在分布式爬虫中的使用,Python版本为3.6.8. Spark安装.配置和使用请参考<Python程序设计开发宝典>"第12 ...

  7. NO.35——qq音乐全站分布式爬虫(一)

    一.目的 qq音乐提供免费在线试听,但是下载需要付费,通过开发爬虫,绕过付费环节,直接下载我们需要的歌曲. 二.方法 爬取对象是web端qq音乐,爬取范围是全站的歌曲信息,爬取方式是在歌手列表下获取每 ...

  8. Python分布式爬虫打造搜索引擎

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 未来是什么时代?是数据时代!数据分析服务.互联网金融,数据建模.自 ...

  9. 基于Scrapy分布式爬虫的开发与设计

    个人博客请访问http://blog.xhzyxed.cn 这个项目也是初窥python爬虫的一个项目,也是我的毕业设计,当时选题的时候,发现大多数人选择的都是网站类,实在是普通不过了,都是一些简单的 ...

最新文章

  1. 腾讯云详解宕机故障:光纤挖断后的150秒
  2. Solaris 默认Shell 修改
  3. mybatis对mapper.xml的解析(三)
  4. c++可视化开发_页面可视化配置搭建工具技术要点
  5. 怎么解决深入学习PHP的瓶颈
  6. 企业大数据应用成熟度如何?大多数企业处于自嗨中
  7. Java中List与数组互相转换
  8. linux command read the content,Linux while 和 read 的用法
  9. Android在WindowManagerService和ActivityManagerService中的Token
  10. Ecology 建模表单 数据库字段与页面字段对应关系显示
  11. 太真实了!工业界AI项目落地血泪教训总结
  12. 《C++程序设计POJ》《WEEK3 类和对象进阶》成员对象和封闭类/友元/this指针/常量成员函数...
  13. Cisco(思科)路由器端口的配置
  14. 内部投资回报率IRR
  15. python中shape 0_Python错误:找到包含0个样本(shape =(0,262))的数组,同时至少需要1个...
  16. debian7 软件源更新
  17. 设置名字的第一个字为默认头像
  18. Python:Numpy—rand、randn
  19. Nginx负载均衡配置
  20. keyshot渲染图文教程_keyshot基础图文教程,手把手教你用keyshot制作动画效果

热门文章

  1. Google Latitude (Google 纵横)
  2. 计算机串口号怎么改变,电脑串口号无缘无故自己改变
  3. ubuntu qq2012
  4. 北大“最丑”数学老师爆红 ,火爆全网,不愧是90后天才 !
  5. 生日祝福小程序_唐嫣迎来生日,好友王冠送上祝福,晒出多张小姐妹合照
  6. 2020一级造价工程师的发展到底如何
  7. MYSQL批量修改表前缀与表名sql语句
  8. Word 2007 如何自动生成目录以及设置正文第一页?
  9. 服务器关机了怎么办_我们把服务器从1米多的台子上扔下来了,没坏
  10. 基于Go语言GoFrame敏捷后台开发框架